ggplot2:带有自定义 y 限制的 geom_bar

Posted

技术标签:

【中文标题】ggplot2:带有自定义 y 限制的 geom_bar【英文标题】:ggplot2: geom_bar with custom y limits 【发布时间】:2018-06-05 16:07:30 【问题描述】:

我想用ggplot2 和自定义 y 限制绘制条形图。

Type <- LETTERS[1:5]
Y    <- c(99, 99.5, 99.0, 98.8, 98.5)

df <- data.frame(Type, Y)

以下代码适用于条形图:

library(ggplot2)
ggplot(data = df, mapping = aes(x = Type, y = Y, fill = Type)) +
  geom_bar(stat = "identity") +
  theme_bw()

但是,我无法设置 y 限制。请参阅下面的代码。

ggplot(data = df, mapping = aes(x = Type, y = Y, fill = Type)) +
  geom_bar(stat = "identity") +
  scale_y_continuous(limits = c(90, 100)) + 
  theme_bw()

ggplot(data = df, mapping = aes(x = Type, y = Y, fill = Type)) +
  geom_bar(stat = "identity") +
  ylim(90, 100) + 
  theme_bw()

已编辑

我猜这种行为是由于stat = "identity"

【问题讨论】:

我不知道这是否可能,因为 geom_bar0 变为 y(就像在 y 轴上插入中断)。为什么不绘制geom_point 感谢@PoGibas 的评论。是的,geom_point 可能是另一种可能性。但是,我想显示这些点抛出棒。任何想法。 【参考方案1】:

使用geom_rect() 代替geom_bar() 的解决方案:

# Generate data
Type <- LETTERS[1:5]
Y    <- c(99, 99.5, 99.0, 98.8, 98.5)
df   <- data.frame(Type, Y)

# Plot data
library(ggplot2)
ggplot() +
    geom_rect(data = df, 
              aes(xmin = as.numeric(Type) - 0.3, 
                  xmax = as.numeric(Type) + 0.3, 
                  ymin = 90, ymax = Y,
                  fill = Type)) +
    scale_x_continuous(label = df$Type, breaks = 1:nrow(df))

geom_rect() 中指定x 坐标为as.numeric(X) -/+ valueymin 坐标为所需的下限,ymax 为实际 Y 值。

【讨论】:

感谢@PoGibas 提供有用的答案。如果您能帮我删除矩形下方的空白区域,我们将不胜感激,这样 y 应该从 90 开始。谢谢 @MYaseen208 你的意思是矩形和刻度之间的空间? 是的,矩形和 x 刻度之间的额外空间。【参考方案2】:

替代方案,使用coord_cartesian:

ggplot(data = df, mapping = aes(x = Type, y = Y, fill = Type)) +
  geom_bar(stat = "identity") +
  coord_cartesian(ylim = c(90, 100)) + 
  theme_bw()

给你:

【讨论】:

这个方案更有吸引力。感谢@Luke C 的精彩回答。 这就是我在coord_cartesian(ylim = range(df$Y)) 中寻找的内容。 @MYaseen208 - 很好的电话,很漂亮。

以上是关于ggplot2:带有自定义 y 限制的 geom_bar的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(自定义填充色)实战(dot plot)

R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(输出多个分组自定义颜色配置)实战

R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(自定义分组颜色主题)实战(dot plot)

R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(自定义分组的颜色)实战

R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(自定义分组的次序)实战

R语言使用ggplot2包使用geom_density()函数绘制密度图(自定义颜色填充线条色彩分组均值线)实战(density plot)