我正在拼命地尝试将刻度范围设置为1到5。我尝试使用ylim()
、scale_y_continuous(breaks = seq(1,5,1))
和coord_cartesian(ylim=c(1,5))
。如何才能做到这一点?谢谢帮助!
n <- 10000
test <- data.frame(value = sample(1:5, size = n, replace = TRUE),
grp = sample(c("A", "B", "C"), size = n, replace = TRUE),
item = sample(c("Item1", "Item2", "Item3", "Item4", "Item5", "Item6"), size = n, replace = TRUE))
test %>%
group_by(item, grp) %>%
summarise(mean = mean(value, na.rm=TRUE)) %>%
ungroup() %>%
ggplot(aes(x = item, y = mean, group = grp, fill = grp)) +
geom_col(position = 'dodge') +
coord_cartesian(ylim=c(1, 5)) +
coord_flip()
2条答案
按热度按时间sr4lhrrt1#
您 * 可以 * 将
ylim
放入coord_flip
中更妙的是,* 不要 * 使用
coord_flip
。geom_col
的默认行为是,如果你有一个分类的y轴和一个数字的x轴,那么它会使条形图水平。我总是发现coord_flip
在应用刻度和主题时会让人困惑,所以你可以把item
放在y轴上,mean
放在x轴上,并坚持在coord_cartesian
中使用xlim
:更好的方法是在
geom_bar
中使用stat = "summary"
,这样就根本不需要总结 Dataframe :2exbekwf2#
您可以像这样在
scale_x_continuous
中使用limits
:创建于2023年3月16日,使用reprex v2.0.2