r - 将 y 轴范围设置为 R 中数据的 +/-10 个百分点

标签 r ggplot2 yaxis

我正在绘制多个 (~300) 条形图,并希望将 y 轴范围固定在数据集中数据的 +/- 10 个百分点之间。例如:如果我的数据集中的 y 轴范围是 (10,20),我想将图形范围显示为 (0,30)。知道如何在所有地 block 上轻松做到这一点吗?谢谢

最佳答案

根据您的问题,您希望将 y 轴扩展 +/- 10%;但是,在问题的文本中,您似乎需要扩展 +/- 10 单位(无论 y 轴的单位是什么)。您可以使用 expansion() 轻松完成任一操作,可应用于 scale_y_continuous()通过expand =争论。这是一个示例图。

library(ggplot2)

df <- data.frame(x=LETTERS[1:4], y=c(10, 20, 30, 25))

p <- ggplot(df, aes(x,y)) + geom_col()

y中数据的限制是 [10, 30]正如你的问题所述。如果您想在任一方向自动将其扩展 10 个单位,则需要应用 expansion(add = (...))expand= scale_y_continuous() 中的参数。在 documentation for that function ,您会看到,如果您提供长度为 1 的向量 add= ,它将应用于上限和下限,而如果您提供长度为 2 的向量,则可以指定如何分别扩展下限和上限。因此,例如,要为两者向外扩展 10 个单位,只需使用add=10 :

p + scale_y_continuous(expand = expansion(add = 10))

enter image description here

如果您想保持下限相同并且仅添加到 y 轴(在本例中为 15),请指定一个包含 2 个数字的向量:

p + scale_y_continuous(expand = expansion(add = c(0,15)))

enter image description here

如果您想扩展百分比,可以指定 mult=而不是add= 。这需要分配给 mult= 的一个或多个数字。并将其乘以图中的最高或最低值。因此,要向任一方向扩展 10%,您需要乘以 0.1:

p + scale_y_continuous(expand = expansion(mult = 0.1))

enter image description here

关于r - 将 y 轴范围设置为 R 中数据的 +/-10 个百分点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69138151/

相关文章:

r - ggplot2 中 x 轴上的额外空白

r - 在ggplotly上添加第二个Y轴

RHEL 6.5 pandoc 上的 Rstudio-server 错误 ifluatex.sty 未找到

r - 如何从 lm_robust 对象获取 AIC

javascript - 在 R 或 Python 中在 map 绘图标记中添加图像/视频的最简单方法单击弹出窗口/信息窗口

angular - 第二个 y 轴无法分配给 ng2 图表中的折线图

reactjs - 重新绘制 Y 轴间隔问题

r - 将 geojson 转换为 sf 以获得 clotopleth map

R - 在 ggplot 中使用面板层创建图例和单独的月份图

r - ggplot : modify coord_cartesian() values dynamically