r - 如何使用 ggplot2 创建具有多个条形的直方图,其中每个数据观察值都是 0 或 1 选择?
问题描述
我是一个完整的 R 菜鸟,对我的一个家庭作业问题有点难过。以下是我尝试使用 ggplot2 创建的直方图类型:
!(https://imgur.com/a/EGKtr56)
我有一个数据集,它指定了电影列表的发行期限、平均评级和评级年份。
我的数据集包括一个名为 rating.year 的列,其中每个数据样本都被分类为“2004”或“2005”,以及另一个名为“Release.period”的列,用于标记 X 轴。Y 轴是 2004 年和 2005 年上映的所有电影评分的平均值。我需要创建一个看起来与所示相同的直方图,其中红色条表示 2004 年评分的所有电影的平均评分,蓝色表示 2005 年评分的所有电影的平均评分。
所以我的问题是:使用 ggplot2,我如何计算各个年份的评分平均值并将其绘制到直方图上,以及如何创建两个单独的条形图,如模型直方图所示?
解决方案
您可以将dplyr
包用于summarise()
您的数据:
library(ggplot2)
library(dplyr)
# create data
factors <- expand.grid(c(2004, 2005), c('1940-1960', '1960-1980', '1980-2000', '2000-2010'))
set.seed(42)
ratings <- runif(50, 2.5, 3.2)
data <- c()
for (i in 1:length(ratings)) {
fact <- sample(1:nrow(factors), 1)
data <- rbind(data, cbind(factors[fact, ], ratings[i]))
}
names(data) <- c('rating.year', 'Release.period', 'rating')
data$rating.year <- factor(data$rating.year)
# calculate the mean of ratings
data.sum <- data %>% group_by(rating.year, Release.period) %>% summarise(rating=mean(rating))
# plot the data
gg <- ggplot(aes(x=Release.period, y=rating, fill=rating.year), data=data.sum) + ylab('Mean of the Average Ratings')
# in geom_bar()
# stat='identity' will make the bars the height of your y-varible, i.e. rating
# position = 'dodge' will place bars with different fill next to each other
gg <- gg + geom_bar(stat='identity', width=0.5, position = 'dodge')
print(gg)
推荐阅读
- java - AccessDeniedException 如果使用 Files.find()
- python - 在重新索引 Series 时,值正在变为 NaN
- java - RecyclerView中视图的动态位置
- python - 如何访问 kivy 中的小部件?我需要通过按下按钮来删除 TextInput
- javascript - 除非页面刷新,否则表单每次都会出现验证错误
- javascript - 在 Jest 中运行特定测试套件的单个测试
- python-3.x - 我可以暂停一个训练周期 [Keras/Python3/Spyder] 吗?
- gradle - 使用 Gradle 多项目构建应用插件适用于主项目
- php - 接收参数 #2 应该是 laravel 中的一个数组
- ios - 如果之前已加载某些网页,WKWebView 不会加载 .archive 文件