r - 如何在不手动设置限制的情况下使用 ggplot2 不对称扩展轴?

标签 r ggplot2

我希望条形图的底部轴为零,但顶部扩展了少量(根据某种比例)。但是,我正在绘制 stat_summary 的输出所以我没有可用的最大值,我正在使用带有 scale="free_y" 的切面所以我不能手动设置它们。否则我会使用 baptiste's trick of adding geom_blank .我知道我可以读取这些值并手动创建一个带有上限的数据框,但是可以在不必对限制进行硬编码的情况下进行设置吗?

另一种选择是计算函数调用之外的均值,并在不调用 stat_summary 的情况下绘制该均值。 (这样我就可以直接为每个方面设置上限),但是有什么办法可以解决这个问题吗?

例子:

ggplot(mtcars)+
  stat_summary(aes(cyl,mpg),
               fun.y="mean",
               geom="bar")+
  scale_y_continuous(expand=c(0,0))+
  facet_grid(carb~.,"free_y")

最佳答案

您可以通过使用自定义类创建比例并实现内部 S3 方法 scale_dimension 来“扩展”ggplot,如下所示:

library("scales")
scale_dimension.custom_expand <- function(scale, expand = ggplot2:::scale_expand(scale)) {
  expand_range(ggplot2:::scale_limits(scale), expand[[1]], expand[[2]])
}

scale_y_continuous <- function(...) {
  s <- ggplot2::scale_y_continuous(...)
  class(s) <- c('custom_expand', class(s))
  s
}

这也是覆盖默认比例的示例。现在,要获得所需的结果,您可以像这样指定展开
qplot(1:10, 1:10) + scale_y_continuous(expand=list(c(0,0.1), c(0,0)))

其中列表中的第一个向量是乘法因子,第二个是加法部分,每个向量的第一个(第二个)元素对应于下(上)边界。

关于r - 如何在不手动设置限制的情况下使用 ggplot2 不对称扩展轴?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22480052/

相关文章:

r - 如何在ggplotly中调整悬停?

html - 在 ggplot 标题中使用 HTML 元素

r - 使用 ggplot2 绘制三个图

r - 如何在ggplot2中将表达式设置为构面的轴文本?

ggplot2 - 基于两个变量创建带有颜色和线型的 ggplot 图例

r - 生成对数正态随机游走

r - 更改 R 3.01 中聚类树状图的标签大小

r - 线型间距和大小的确切尺寸

readr - 在 CSV 中导入日期列

r - 错误: object 'h2o.targetencoder' not found