R语言 修剪ggplot2图形的x轴

hkmswyz6  于 2023-03-10  发布在  其他
关注(0)|答案(1)|浏览(138)

我绘制了1999-2021年的数据,希望修剪图表区,以便看不到1998年或2023年的空白区域。我希望线条从1999年开始,到2021年结束,或者正好是我拥有的数据量。我尝试了以下几种方法:scale_x_discrete(),coord_cartesian(),我也尝试过使用limits=c(as.Date('1999 -01- 16'),as.Date('2021 -12- 16'),但我就是不能让它剪切掉我不想看到的图形区域。
有人能帮我吗?
下面是我的代码:

xcfoodtotal$date <- as.Date(xcfoodtotal$date)
p <- ggplot(data = xcfoodtotal, aes(x=date, y=consumption)) +
  geom_line(color="turquoise4", size=1) +
  geom_smooth(method=lm, se=TRUE, linetype = "dashed", col="blue", size=0.5) +
  theme_bw() + 
  labs(x="", y="kg/Capita") + 
  theme(plot.title = element_text(hjust=0.5, size=15, face="bold"), 
    axis.text.x=element_text(angle=60, hjust=1, face = "bold"),
    axis.text.y=element_text(hjust=1, face = "bold"), 
    text = element_text(size = 16, family="Helvetica"))

 p + scale_x_date(date_breaks = "1 year", labels = date_format("%Y"))
lmvvr0a8

lmvvr0a81#

这是我的原始代码:

xcfoodtotal$date <- as.Date(xcfoodtotal$date)
p <- ggplot(data = xcfoodtotal, aes(x=date, y=consumption)) +
  geom_line(color="turquoise4", size=1) +
  geom_smooth(method=lm, se=TRUE, linetype = "dashed", col="blue", 
    size=0.5) +
  theme_bw() + 
  labs(x="", y="kg/Capita") + 
  theme(plot.title = element_text(hjust=0.5, size=15, face="bold"), 
        axis.text.x=element_text(angle=60, hjust=1, face = "bold"),
        axis.text.y=element_text(hjust=1, face = "bold"), 
        text = element_text(size = 16, family="Helvetica"))

p + scale_x_date(date_breaks = "1 year", 
                 labels = date_format("%Y"))

我解决这个问题的方法是给scale_x_date()添加一个属性:

xcfoodtotal$date <- as.Date(xcfoodtotal$date)
p <- ggplot(data = xcfoodtotal, aes(x=date, y=consumption)) +
  geom_line(color="turquoise4", size=1) +
  geom_smooth(method=lm, se=TRUE, linetype = "dashed", col="blue", 
    size=0.5) +
  theme_bw() + 
  labs(x="", y="kg/Capita") + 
  theme(plot.title = element_text(hjust=0.5, size=15, face="bold"), 
        axis.text.x=element_text(angle=60, hjust=1, face = "bold"),
        axis.text.y=element_text(hjust=1, face = "bold"), 
        text = element_text(size = 16, family="Helvetica"))

p + scale_x_date(date_breaks = "1 year", 
                 labels = date_format("%Y"),
                 limits=c(as.Date('1999-01-16'), as.Date('2021-01-16')),
                 expand=c(0, .9))

这样就去掉了空白区域,也不会显示1998年或2022年。

相关问题