创建 GGPLOT 直方图

3
我有以下函数,'n'次掷出 'k'个骰子,结果为'k'个骰子点数之和。
rolldie = function(n, k){
  # Your code here
  die=sample(1:6, size = k, replace = TRUE)
  replicate(n, sum(sample(c(1:6),k, replace=TRUE)))
}
rolldie(5, 4)

我需要创建一个ggplot直方图来展示这个函数的结果,使用n=1000和任意值的k。这就是我卡住的地方,我不确定如何为rolldie的结果创建这个直方图。


ggplot有相当好的文档,并链接到几个深入教程。在阅读了其中一些内容后,你到底遇到了什么困难?你尝试过geom_histogram吗? - camille
3个回答

3

ggplot需要一个数据框,所以你可以尝试这样做...


library(ggplot2)

data.frame(die_sums = rolldie(1000, 10))|>
  ggplot()+
  geom_histogram(aes(die_sums), binwidth = 1)

reprex package(v2.0.1)于2022年2月13日创建


2
这里有一个简化的`rolldie`函数解决方案。
掷骰子,记录结果,将表格转换为`data.frame`并绘制图形。
library(ggplot2)

rolldie <- function(n, k){
  replicate(n, sum(sample(6, k, replace=TRUE)))
}

set.seed(2022)
n <- 1000
Points <- rolldie(n, 4)

Points <- as.data.frame(table(Points))
ggplot(Points, aes(Points, Freq)) + 
  geom_col()

reprex 包 (v2.0.1) 于2022年02月13日创建


1
这里有一个解决方案:
library(janitor)
data <- tabyl(rolldie(1000, 1)) %>% rename(Number = 1)
ggplot(data = data, aes(x= as.factor(Number), y=n, label = Number))+
  geom_col() +
  geom_text(aes(label = n), vjust = -0.5)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接