问题描述
如何在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 = "")
解决方法
没有看到您的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 = "")