尽管对我的数据使用 scale_x_discrete,但 X 轴标签不存在

X axis labels not present despite using scale_x_discrete for my data

我正在尝试使用 ggplot 按月绘制温度和降水量。

花了一些时间得到两个 y 轴(与好的绘图理论相反 - 我知道!),我的 x 轴现在不存在了。

有没有可能我的代码中遗漏了一些东西?

月是这样创建的

Month <- c(1,2,3,4,5,6,7,8,9,10,11,12)

图中的其余部分是使用以下内容创建的

gp1 <-ggplot() + 
  geom_bar(mapping = aes(x = Month, y = Prec * 40 / 1100), stat = "identity",fill="cornflowerblue") + 
  geom_point(mapping = aes(x = Month, y = meanTemp),col="orange") + 
  geom_line(mapping = aes(x = Month, y = meanTemp),col="orange") + 
  geom_point(mapping = aes(x = Month, y = maxTemp),col="red") + 
  geom_line(mapping = aes(x = Month, y = maxTemp),col="red") + 
  geom_point(mapping = aes(x = Month, y = minTemp),col="gold") + 
  geom_line(mapping = aes(x = Month, y = minTemp),col="gold") + 
  scale_x_discrete(breaks=c(1,2,3,4,5,6,7,8,9,10,11,12), labels=c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")) +
  scale_y_continuous(name = expression("Temperature ("~degree~"C)"), limits = c(0, 40))
gp1<- gp1 %+% scale_y_continuous(name = expression("Temperature ("~degree~"C)"), sec.axis = sec_axis(~ . * 1100 / 40 , name = "Precipitation (mm)"), limits = c(0, 40))
gp1<-gp1+theme_classic()
gp1

生成的图看起来 as such

问题是你的 x 轴是连续的,而不是离散的。

这是因为您为您的 x 美学指定了数值。如果您要为 x 美学指定文本或因子值,那么您的 x 轴将是离散的。

scale_x_discrete 换成 scale_x_continuous 解决了我实验中的问题。