R语言 ggplot 柱状图 的 柱子总是 顶到图顶

R语言ggplot2绘制柱状图,相设置y轴范围在0到0.5,间隔0.1,breaks=seq(0,0.5,0.1);刻度用scale_y_continuous()内置labels设置为"0,10%,20%,30%,40%,50%"。但y轴只能显示数据中的最大值,却不显示y的最大值"0.5"。

代码和图片如下:

ggplot(family = "Times New Roman")+
  geom_bar(data = melt_Gdata,stat="identity",width=0.4,aes(x=Year,y=value,fill=variable),position="stack")+
  labs(x="Years",y="Recruitment(%)")+
  scale_fill_manual(values=c("goldenrod1","honeydew3","lightpink2","blanchedalmond","yellow2","lightgoldenrod3","darkgoldenrod3","lightcoral","sandybrown","cornflowerblue","coral"),name="Coral Taxon")+
  theme(panel.grid = element_blank())+
  scale_y_continuous(expand = c(0,0),breaks = c(0,0.1,0.2,0.3,0.4,0.5) )

img

改成 position=dodge后:

ggplot(family = "Times New Roman")+
  geom_bar(data = melt_Gdata,stat="identity",width=0.4,aes(x=Year,y=value,fill=variable),position="dodge")+
  labs(x="Years",y="Recruitment(%)")+
  scale_fill_manual(values=c("goldenrod1","honeydew3","lightpink2","blanchedalmond","yellow2","lightgoldenrod3","darkgoldenrod3","lightcoral","sandybrown","cornflowerblue","coral"),name="Coral Taxon")+
  theme(panel.grid = element_blank())+
  scale_y_continuous(expand = c(0,0),breaks = c(0,0.1,0.2,0.3,0.4,0.5) )

img

引用 皆我百晓生 小程序回复内容作答:

根据你提供的代码和图片,你正在使用 ggplot2 库的 R 语言包来绘制柱状图。你想要调整 y 轴的范围并显示特定的刻度标签。然而,无论你如何设置刻度标签和范围,柱状图的柱子总是顶到图的顶部。

在你的代码中,通过 scale_y_continuous 函数设置了y轴的范围和刻度标签。但是,可能由于数据中的最大值太接近图的顶部,导致柱子顶到了图的顶部。这可能使得 y 轴上的最大值 "0.5" 无法完全显示出来。

要解决这个问题,你可以尝试调整两个方面:

1.调整图的高度或宽度,以使得图的区域可以容纳 y 轴上的最大值 "0.5"。

2.通过增加 expand 参数的值,来增加 y 轴的上下空白区域。例如,将 expand = c(0, 0) 更改为 expand = c(0.05, 0.05),这将在 y 轴的范围两端增加一些空白。

你可以尝试这两种方法来解决柱子顶到图顶的问题。希望能对你有所帮助!