我正在尝试使用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)