如何在Barplot(ggplot)中的各个条形组之间添加空间

时间:2018-07-24 15:45:24

标签: r ggplot2 bar-chart geom-bar

在R ggplot中,我需要制作一个条形图,其中基于称为“模式”的因素将条形组在一起。每组钢筋之间应有间距。

我在SO中看到以前曾出现过此问题的不同版本,但提供的答案似乎不适用于我的情况。

这是我的data.frame:

$timeout_in_sec

这是我的代码,在这里我尝试实现给出herehere给出的答案。

> df_mainContributors
                  Top_contributor Eigvec_value Mode
1         Indonesia Cassava dried    0.3489285    2
2  China, mainland Sweet potatoes   -0.3280290    2
3           China, mainland Maize   -0.2848236    2
4              Indonesia Potatoes   -0.2749160    2
5             Thailand Cottonseed   -0.3844600    3
6               Thailand Soybeans    0.3531400    3
7                 Indonesia Maize    0.3308546    3
8          China, mainland Millet   -0.2620598    3
9        China, mainland Potatoes   -0.3883072    4
10                  Thailand Rice    0.3108829    4
11   China, mainland Oil, soybean    0.2783780    4
12        Thailand Sweet potatoes    0.2754683    4

这是导致组之间没有空格的图形:

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试一下(我在您的ggplot中添加了scale_x_discrete的内容,不想弄乱数据框本身的内容)

  ggplot(df_plot, aes(x = Top_contributor, y = Eigvec_value, fill = Mode)) +
  geom_bar(color = "black", stat = "identity", position = dodge, width = 0.9) +
  scale_x_discrete(limits = c(levels(df_plot$Top_contributor)[1:4],
                              "ABC",
                              levels(df_plot$Top_contributor)[5:8],
                              "DEF",
                              levels(df_plot$Top_contributor)[9:12]),
                   labels = c("ABC" = "",
                              "DEF" = "")) +
  theme(axis.text.x = element_text(angle = 60, hjust = 1))

结果(请注意,我没有为您的艾根斯输入所有小数位):enter image description here