如何在R中强制y轴的最小和最大范围?

21

如果您查看下面的图表(y轴),您会注意到刻度从00.20。我有其他直方图,范围是从00.4。我想使它们都一致从01并显示y轴从01

conne <- file("C:Aisdefined.bin","rb")
sd    <- readBin(conne, numeric(), size=4,  n=1440*720, signed=TRUE)
y     <- t(matrix((data=sd), ncol=1440, nrow=720))
r     <- raster(y)
f     <- hist(y, breaks=10,main="sm")

f$counts <- f$counts/sum(f$counts)
dat <- data.frame(counts= f$counts,breaks = f$mids)
ggplot(dat, aes(x = breaks, y = counts, fill =counts)) + 
   geom_bar(stat = "identity",alpha = 0.8) +
   xlab("Pearson correlation")+ ylab("Frequency") + 
   scale_x_continuous(breaks = seq(-1,1,0.250), labels = seq(-1,1,0.250)) +
   ggtitle("2011") + theme(axis.title.x = element_text(size = 20)) + 
   theme(axis.title.y = element_text(size = 20)) + 
   theme(text = element_text(size=20), 
   axis.text.x = element_text(angle = 90, vjust=1,colour="black"), 
   axis.text.y = element_text(colour="black")) + 
   theme(plot.title = element_text(size = rel(2.5))) + 
   scale_fill_gradientn(colours = "black")

2
为什么 ggplot2 在 y 轴值为 0 的下方包括空间,当没有数据点在 0 以下时? - SabreWolfy
2个回答

32

只需添加:

+ coord_cartesian(ylim=c(0,1))

1
为什么不直接使用 ylim() 函数呢? - MERose
+coord_cartesian(ylim = c(0.005, 0.02)) 中的错误: 一元运算符的参数无效。 - Mona Jalal
1
@MonaJalal 需要将它添加到 ggplot 对象中,而不是孤立使用。它旨在添加到 OP 的原始绘图规范中。 - James

16

试一试:

scale_y_continuous( limits = c(0,1), expand = c(0,0) )

2
注意:在比例尺上设置限制可能会排除数据。 - James
@James确实 - 我错过了OP只想要y轴的事实。我的错误。在这种情况下仍然可以使用scale_y_continuous,因为它是一个直方图,所以值将被限制在0和1之间。 - Simon O'Hanlon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接