【问题标题】:Combined barplot modify x-axis tick labels in R组合条形图修改 R 中的 x 轴刻度标签
【发布时间】:2018-06-11 18:03:16
【问题描述】:

我的 x 轴刻度标签出现的顺序有问题。我创建了一个包含组合数据的图表。在 x 轴上,我标记了使用的样本,但是对于前三个数据集(六、八、十二周),每个条形列使用了两个样本。在最后一组(终点)中,AbxFMT_2901 应该对应于前三个数据集的 AbxFMT_2901/2902,因为在终点我只有一个样本(2901)而丢失了另一个样本(2902)。该标签应该只出现在终点部分,并且应该是第一个。

这是我用来生成图表的代码:

df = bind_rows(six_wks_huCD45_AbxFMT, eight_wks_huCD45_AbxFMT, twelve_wks_huCD45_AbxFMT, terminal_data_huCD45_PBL_AbxFMT)

df$orderweeks = factor(df$weeks, levels = c('six weeks', 'eight weeks', 'twelve weeks', 'terminal point'))
df$Sample. <- as.character(df$Sample.)
df$ordersample <- factor(df$Sample., levels = unique(df$Sample.))

df_plot <- ggplot(df, aes(x = df$ordersample, y =df$`huCD45 Cell count`, group = weeks, fill = weeks))+ geom_bar(position = "dodge", stat = "identity") + facet_grid(.~orderweeks) 

df_plot + labs(x = "Samples", y= "huCD45 cell count", title = "PBL Analysis of Abx+FMT Treatment") + scale_fill_discrete(breaks = c("six weeks", "eight weeks", "twelve weeks", "terminal point")) + theme(axis.text.x = element_text(angle = 90))

这是数据框的示例:

Sample. huCD45 Cell count          weeks     orderweeks      ordersample
1  AbxFMT_2901/2902             860.0      six weeks      six weeks AbxFMT_2901/2902
2  AbxFMT_2903/2904            3736.0      six weeks      six weeks AbxFMT_2903/2904
3  AbxFMT_2905/2906            7137.0      six weeks      six weeks AbxFMT_2905/2906
4  AbxFMT_2907/2908            2183.0      six weeks      six weeks AbxFMT_2907/2908
5  AbxFMT_2909/2910            7485.0      six weeks      six weeks AbxFMT_2909/2910
6  AbxFMT_2911/2912            3509.0      six weeks      six weeks AbxFMT_2911/2912
7  AbxFMT_2901/2902           28296.0    eight weeks    eight weeks AbxFMT_2901/2902
8  AbxFMT_2903/2904           18084.0    eight weeks    eight weeks AbxFMT_2903/2904
9  AbxFMT_2905/2906           27602.0    eight weeks    eight weeks AbxFMT_2905/2906
10 AbxFMT_2907/2908           16706.0    eight weeks    eight weeks AbxFMT_2907/2908
11 AbxFMT_2909/2910           22571.0    eight weeks    eight weeks AbxFMT_2909/2910
12 AbxFMT_2911/2912           18731.0    eight weeks    eight weeks AbxFMT_2911/2912
13 AbxFMT_2901/2902           39975.0   twelve weeks   twelve weeks AbxFMT_2901/2902
14 AbxFMT_2903/2904           19042.0   twelve weeks   twelve weeks AbxFMT_2903/2904
15 AbxFMT_2905/2906           68493.0   twelve weeks   twelve weeks AbxFMT_2905/2906
16 AbxFMT_2907/2908           23533.0   twelve weeks   twelve weeks AbxFMT_2907/2908
17 AbxFMT_2909/2910           50678.0   twelve weeks   twelve weeks AbxFMT_2909/2910
18 AbxFMT_2911/2912           43465.0   twelve weeks   twelve weeks AbxFMT_2911/2912
19      AbxFMT_2901            1318.0 terminal point terminal point      AbxFMT_2901
20 AbxFMT_2903/2904            4565.5 terminal point terminal point AbxFMT_2903/2904

我尝试了使用 scale_x_discrete 和 Continuous 的各种方法,但它不起作用。非常感谢任何建议。谢谢!!

【问题讨论】:

  • 你能发布你正在运行的代码和示例数据吗?请使用代码编辑问题,包括对library() 的调用和dput(df) 的输出。或者,如果dput(head(df, 20)) 的输出太大。 (df 是您的数据集的名称。)
  • 没问题!
  • 你需要改变的一点是:facet_grid(.~orderweeks, scales = 'free_x')

标签: r ggplot2


【解决方案1】:

我会改变两件事:

df$ordersample <- factor(df$Sample., levels = sort(unique(df$Sample.)))

+ facet_grid(.~orderweeks, scales = 'free_x') 

【讨论】: