如何在geom_bar中设置y轴的原点(ylim不起作用)

时间:2016-10-30 10:01:41

标签: r ggplot2 geom-bar yaxis

我正在尝试使用ggplot控制条形图中y轴的范围。对于此图,我想将y轴原点设置为1,而不是默认为ggplot2。

对于这个例子,假设我想绘制范围从1到7的比例的中值,并且我想设置y轴的范围。 (下面显示了一个工作示例)。

如果我只使用geom_bar创建条形图,则y轴的原点自动设置为零。

如果我使用scale_y_continuous(limits = c(1,7))来设置y轴的限制,则不会绘制条形。

如果我使用scale_y_continuous(limits = c(1,7),oob = rescale_none),y轴的范围从1到7,但就像条形图从零开始绘制,使得绘图在美学上不理想(图表的条形和底部边框之间没有边距。

这是一个工作示例(抱歉缺少图表;由于声誉不足,我不允许发布它们):

library(ggplot2)
library(scales)

# Creating "dataset"
dt <- data.frame(a=c("A", "B", "C"),
                 b=c(3, 5, 1))

# Default y-axis range, internaly set by ggplot
ggplot(dt, aes(x=a, y=b)) + theme_bw() +
  geom_bar(stat="identity")


# Simply using 'limits'. Breaks expected in y=c(1,3,5,7)
# Bars not graphed
ggplot(dt, aes(x=a, y=b)) + theme_bw() +
  geom_bar(stat="identity") + 
  scale_y_continuous(limits=c(1,7), breaks=c(1,3,5,7))


# Using 'oob' from package:scales
# Bars are shown, breaks in the right place, 
# but bars start running from y=0 (not beautiful)
ggplot(dt, aes(x=a, y=b)) + theme_bw() +
  geom_bar(stat="identity") + 
  scale_y_continuous(limits=c(1,7), breaks=c(1,3,5,7), oob=rescale_none)

0 个答案:

没有答案