r - R ggplot - 如何在条形图上方旋转计数
问题描述
我的数据框df
看起来像这样
Year Frequency
1 1975 86
2 1976 52
3 1977 53
4 1978 54
5 1979 301
6 1980 161
您可以使用它自己重现 data.frame:
ydf <- structure(list(Year = c(1975, 1976, 1977, 1978, 1979, 1980),
Frequency = c(86, 52, 53, 54, 301, 161)),
row.names = c(NA, -6L), class = "data.frame")
我绘制了这张图
ggplot(ydf, aes(x = Year, y = Frequency, fill=Frequency)) + geom_bar(stat = "identity") + geom_text(aes(label = Frequency), nudge_y=1, check_overlap=TRUE)+ scale_x_discrete(guide = guide_axis(angle = 90))
但是,您可以看到条形上方的频率重叠。我试图将 xaxis 分开或像 xlabel 一样旋转频率 90。我做了很多谷歌搜索,但没有运气。我对 R 很陌生,所以我的绘图代码可能不正确或者可以做得更好。请注意,我喜欢图例显示为一个条形的方式,并且不想更改它。
解决方案
使用 @markus 建议的 geom_col、nudge_y 和标签的角度:
library(ggplot2)
set.seed(42)
# Making up data
my_df <- tibble::tibble(year = 1:25, freq = sample(50:400, replace = T, size = 25))
# a variable to change nudge_y based on data's range
range = max(my_df$freq) -min(my_df$freq)
#Plotting
ggplot(my_df, aes(x = year, y = freq)) +
geom_col(aes(fill = freq)) +
geom_text(aes(label = freq),
angle = 90,
nudge_y = range / 20) # the 20 may need adjusting for data with significantly different range
由reprex 包(v0.3.0)于 2020 年 12 月 27 日创建
推荐阅读
- r - 如何在 R 中从其他 3 列(一列在另一列下方)创建一列
- r - 如何在 R 中的 lavaan 包中打印所有直接和间接效应方程?
- javascript - 如何避免我的 querysnapshot.foreach 上的循环?
- r - R:验证对应列值(ID 和名称)的匹配并标记不一致,理想情况下在 dplyr
- java - Flyway 迁移成功,但未添加字段
- json - 如何使用 jq 将 json 转换为一维保存树结构名称?
- python - NoReverseMatch 在 /34/order/update/
- html - CSS 在页面加载/重新加载时未正确呈现
- spring - 为什么使用 HibernateValidator 时无法获取 ${validatedValue}
- .net-core - 如何在 .NET 中获取 Uri 的 https 版本?