【问题标题】:Round up Y axis in ggplot2在ggplot2中向上舍入Y轴
【发布时间】:2021-01-07 19:58:21
【问题描述】:

当您在 ggplot2 中绘制条形图时,y 轴标记会自动停止在低于最大值的中断处。 在图中,最后一个标签是 40,而我希望它向上舍入到下一个中​​断,即 50。

 set.seed (52)
 date<-data.frame(date=sample(seq(as.Date('2020-01-01'), as.Date('2020-01-31'), by="day"),1000,replace=TRUE))
 ggplot(data=date)+
 geom_bar(mapping=aes(x=date))

我知道添加 +scale_y_continuous(limits=c(0,50)) 将手动将图表设为 50,但我需要不断更改这部分代码。有没有办法在 ggplot 函数中动态执行此操作?

【问题讨论】:

  • 尝试在代码的最后部分添加scale_y_continuous(breaks = scales::pretty_breaks(15))

标签: r ggplot2


【解决方案1】:

一个选项可能是为这样的中断定义一个序列函数:

#Function
f <- function(y) seq(floor(min(y)), ceiling(max(y)),by=10)
#Code
set.seed (52)
date<-data.frame(date=sample(seq(as.Date('2020-01-01'), as.Date('2020-01-31'), by="day"),1000,replace=TRUE))
ggplot(data=date)+
  geom_bar(mapping=aes(x=date))+
  scale_y_continuous(breaks = f)

输出:

另一个选项可能是使用变量中的最大值并使用来自plyr 的函数round_any()

library(plyr)
library(ggplot2)
#Code
set.seed (52)
date<-data.frame(date=sample(seq(as.Date('2020-01-01'), as.Date('2020-01-31'), by="day"),1000,replace=TRUE))
#Extract limits
upper <- round_any(max(table(date$date)),10,f=ceiling)
#Plot
ggplot(data=date)+
  geom_bar(mapping=aes(x=date))+
  scale_y_continuous(limits = c(0,upper))

输出:

【讨论】:

  • 可以将数字四舍五入到最接近的 10 吗?
  • @Basil 我已经为您的问题添加了更新,希望对您有用!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-21
  • 2017-11-22
相关资源
最近更新 更多