如何更改facet-wrapt堆积条形图中的x轴刻度--ggplot R

Jota3go

我正在尝试用我的数据框中的另一个变量替换多面堆叠条形图中的 x 轴刻度。我正在比较两个不同年份的相应周,所以我在 x 轴上使用“year”变量,在 y 轴上使用“total”变量,并按年份中的周数包装(即一月的第一周)得到数字 1,第二个是 2 等)。我已经尝试了很多东西,包括 scale_x_discrete;scale_x_date; axi.ticks.x、geom_text 等....

这是一个可重现的示例:

dat <- data.frame(date = as.Date(c("2021-01-03", "2020-01-05", "2021-01-03", "2020-01-05", "2021-01-03", "2021-01-03", "2021-01-10","2020-01-12", "2021-01-10", "2020-01-12", "2021-01-10", "2021-01-10", "2021-01-17", "2020-01-19", "2021-01-17", "2020-01-19", "2021-01-17", "2021-01-17")),
                 total = c(109334, 150052, 36546, 51476, 2961, 19988, 106719, 126748, 31893, 
                           29576, 5401, 19336, 91021, 108892, 23030, 26115, 3861, 15663),
                 product = c("A", "A","B", "B", "C", "D", "A", "A", "B", "B", "C", "D", "A", 
                              "A","B", "B", "C", "D"),
                 week = c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3),
                 year = c(2021,2020,2021,2020,2021,2021,2021,2020,2021,2020,2021,2021,2021,2020,2021,2020,2021,2021))  

dat %>% ggplot(aes(year, total, color = year == 2021)) +
  geom_bar(position = "stack", stat = "identity", size =0.6)+
  #scale_x_date(expand = c(0,0), labels = date_format("%m/%d/%y"))+
  scale_y_continuous(expand = c(0,0), breaks = seq(0, 350000, by = 50000), limits=c(0, 350000))+
  #scale_x_discrete(breaks = dat$year, labels = dat$date)+
  scale_color_manual(values = c(NA, 'red'), guide=F)+
  facet_wrap(~week, nrow = 1)+
  #geom_text(aes(y= total, label = date), position = position_dodge(width = 1), angle = 90, vjust = -1, size = 2)+
  theme(axis.text.x=element_text(angle = 90, vjust =0, hjust =0),
        #axis.ticks.x = ,
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        panel.background = element_blank(),
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        panel.spacing.x = unit(0.1, "lines"))

最终结果将使 x 轴显示一周的日期(该周的星期日日期)。所需的 x 轴刻度(请忽略上面的 *)

谢谢!

乔恩·斯普林

看起来您可以在这里使用离散的 x 轴,因为您不关心日期在时间轴上的位置,而只是按时间顺序排列类别。使用as.character(date)可以实现这一点,或者您可以交换format(date, "%d-%b-%Y")以复制示例中的日期格式。然后,您还需要 的scales = "free_x"参数facet_wrap,以便每个方面都可以仅显示出现在该方面的日期。

编辑:如果你想显示一个格式化的日期,但按时间顺序排列,你需要将格式化的日期变成一个因素。forcats::reorder()给出了一种基于另一个变量来控制因子顺序的方法。

dat %>% 
    mutate(date_label = format(date, "%d-%b-%Y") %>% forcats::fct_reorder(date)) %>%
    ggplot(aes(date_label, total, color = year == 2021)) +
    geom_bar(position = "stack", stat = "identity", size =0.6)+
    scale_y_continuous(expand = c(0,0), breaks = seq(0, 350000, by = 50000), limits=c(0, 350000))+
    scale_color_manual(values = c(NA, 'red'), guide=F)+
    facet_wrap(~week, nrow = 1, scales = "free_x")+
    ...

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何更改ggplot的条形图中x轴文本的位置?

R ggplot更改堆积条形图中的一个变量的颜色

如何在ggplot条形图中沿x轴分组

ggplot 分组堆积条形图更改刻度标签

r ggplot2使用交互aes修改堆积条形图的x轴标签

在R中的ggplot条形图中更改条形的颜色

在Material Google条形图中更改X轴刻度

更改条形图中的 x 轴刻度大小

如何通过ggplot2 / R中填充类别之一的值来订购堆积条形图x类别

R:条形图中的x轴-条形图中间的x轴和中心刻度线的宽度

特殊堆积条形图R ggplot

R中ggplot条形图的x轴限制

ggplot从堆积条形图中更改一个条形的颜色

如何在R中使用ggplot2(百分比,排序)更改堆积条形图

如何在 R ggplot 中创建具有不同离散 X 轴的多面条形图

R ggplot2:突出显示堆积条形图中的值

在R中的条件分布条形图中更改x轴变量

R中的游泳者图(ggplot):如何订购堆积条形图?

如何使用 ggplot2 在 R 中创建分组和堆积条形图

如何在R的直方图中更改x轴刻度

如何缩放ggplot堆积的条形图

如何使用ggplot2修改极坐标中堆积条形图的y轴的限制?

如何控制堆积条形图中x轴标签位置的间距?

如何在R中使用ggplot2在条形图中的条形图中添加标签?

R Plotly:如何在水平反转的条形图中更改刻度文本的位置?

如何解决 d3在条形图中X轴上的刻度线数?

如何使用 Plotly 删除堆叠和分组条形图中的 x 轴刻度标签

R ggplot中并排的堆积条形图

r ggplot x轴刻度线顺序