GGPLOT轴操作

问题描述

如何在ggplot中操纵x轴,以使2020年7月月份(直接标记在下面)与1.4相对应,而2020年6月月份则与5.6等对应?

代码如下:

ggplot(data,aes(x = month_end_date,y = average)) +
  geom_col(alpha = 0.6) +
  geom_text(aes(label = average),vjust = -0.5) +
  scale_x_date(breaks = '1 month',date_labels = '%Y-%m',expand =
c(.01,.01)) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90,vjust = .4)) +
  labs(fill = '',y = "")

plot

解决方法

没有看到您的ggplot代码,我不确定是什么造成了这个问题,但是要解决的一般解决方案是使用+ theme()函数并将hjust参数设置为axis.text.x。为hjust设置一个负值,将标签向左移动。为hjust尝试不同的值,直到获得所需的值。

+ theme(axis.test.x = element_text(hjust = -0.5))

如果您使用的是预定义的主题(内置的或您自己的),请确保此行在应用该主题之后,否则通过应用该主题将覆盖此说明。

,

我被鼓励在评论中发表我的建议作为答案:

变量名“ month_end_date”使我相信,使用的日期实际上是月底的某个日期。要获得几个月来的试条,您希望您的日期成为每月的第一天。使用库lubridate可以轻松完成此操作:

ggplot(data,aes(x = lubridate::floor_date(data$month_end_date,unit = "months"),y = average)) +
  geom_col(alpha = 0.6) +
  geom_text(aes(label = average),vjust = -0.5) +
  scale_x_date(breaks = '1 month',date_labels = '%Y-%m',expand = c(.01,.01)) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90,vjust = .4)) +
  labs(fill = '',y = "")