首页 > 解决方案 > 将 x 标签格式化为 %d/%m

问题描述

我有一个创建的热图,我试图将 x 轴标签格式化为 %d/%m (dd/mm)。我需要将原始日期转换为离散的因子。尝试了以下代码,但它给了我一个错误:

ggplot(data,aes(x=as.factor(DATE) ,y=as.factor(PRODUCT),fill=escale)) +
     geom_tile(colour="white",size=0.25) + 
     scale_x_discrete(position = "top",label=format(DATE,"%d/%y")) 

如何编写正确的代码来格式化 x 标签,使其类似于“18/12”,例如 (dd/mm)。

标签: rggplot2dplyr

解决方案


正如评论中所指出的,这在不转换为因子的情况下更容易做到,尽管您需要使用breaks. scales::date_format在中使用scale_x_date

library(ggplot2)
library(scales)

df <- data.frame(
  expand.grid(date = as.Date(c("2019-11-01", "2019-11-20")),
              y = letters[1:2]), 
  value = 1:4)

ggplot(df, aes(date, y, fill = value)) +
  geom_tile() +
  scale_x_date(breaks = df$date, 
               labels = date_format(format = "%d/%m"))

reprex 包(v0.3.0)于 2019 年 12 月 18 日创建

听起来您也可能会scales::date_breaks为您的特定用例获得一些里程,但如果没有更多细节就很难说。


推荐阅读