maddenhs
maddenhs

Reputation: 51

Creating GGPLOT Histogram

I have the following function, 'n' rolls of 'k' dice, in which the result is the sum of 'k' rolls.

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)

I then have to create a ggplot histogram to show the results of the function, using n=1000 with whatever values of k. That is where I am stuck, I am not sure how to create this histogram for the results of rolldie.

Upvotes: 3

Views: 144

Answers (3)

Rui Barradas
Rui Barradas

Reputation: 76402

Here is a solution with a simplified rolldie function.
Roll the dies, table the results, coerce the table to data.frame and plot.

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()

Created on 2022-02-13 by the reprex package (v2.0.1)

Upvotes: 2

Peter
Peter

Reputation: 12699

ggplot expects a data frame, so you could try this ...


library(ggplot2)

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

Created on 2022-02-13 by the reprex package (v2.0.1)

Upvotes: 3

Bloxx
Bloxx

Reputation: 1560

Here is one solution:

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)

Upvotes: 1

Related Questions