R 具有多个分组级别的复杂条形图

R 具有多个分组级别的复杂条形图,r,R,我正在尝试建立一个复杂的条形图,其中包含要区分的类别。这是数据框 Treatment DCA.f Megalorchestia Talitridae Traskorchestia 1 A (-Inf,0] 8.000000 4843.6667 1394.0000 2 U (-Inf,0] 21.000000 2905.3333 483.6667 3 A (0,0.1

我正在尝试建立一个复杂的条形图,其中包含要区分的类别。这是数据框

   Treatment      DCA.f Megalorchestia Talitridae Traskorchestia
1          A   (-Inf,0]       8.000000  4843.6667      1394.0000
2          U   (-Inf,0]      21.000000  2905.3333       483.6667
3          A    (0,0.1]      25.000000   254.8571        41.0000
4          U    (0,0.1]      30.714286   691.0000       360.1429
5          A  (0.1,0.2]      35.400000  1355.2000       127.4000
6          U  (0.1,0.2]     104.400000   705.4000        50.2000
7          A  (0.2,0.3]       3.857143   649.7143       633.4286
8          U  (0.2,0.3]      10.857143   510.4286       268.7143
9          A  (0.3,0.4]      13.444444   981.5556       207.5556
10         U  (0.3,0.4]      10.666667  1567.5556       417.5556
11         A (0.4, Inf]       0.000000     3.0000         1.2000
12         U (0.4, Inf]       0.000000     3.8000         0.0000
我想要一个条形图,每个DCA.f组显示三种生物类别的6个值(右三列),用处理(AVU)分隔。因此,如果你阅读图的底部,DCA.f会有一个大的类别,然后在这个类别中会有六个条。每个属两个,按处理颜色编码。然后对所有DAC.f重复。我已经浏览了很多其他的barplot帖子,但他们都没有找到我


有什么帮助吗?

这里有一种可能性。使用条形图时,输入矩阵的每一列将对应于一组条形图,每一行对应于组中的不同条形图。因此,我们需要重塑数据,使列表示“DCA.f”的级别

library(reshape2)
library(RColorBrewer)

# reshape data
df2 <- melt(df)
df3 <- dcast(df2, Treatment + variable ~ DCA.f)

# create color palette
ncols <- length(unique(df3$variable))
cols <- c(brewer.pal(ncols, "Greens"), brewer.pal(ncols, "Reds"))

# plot
barplot(as.matrix(df3[ , -c(1, 2)]),
        beside = TRUE,
        col = cols,
        cex.names = 0.7)

# add legend
legend(x = 15, y = 4000, legend = paste(df3$Treatment, df3$variable), fill = cols)
library(重塑2)
图书馆(RColorBrewer)
#重塑数据

df2无论是
ggplot2
还是
lattice
软件包都可以满足您的需求。从简单开始,逐步构建您要寻找的复杂绘图。通常可能需要对数据进行重新整形(包
restrape2
及其功能
melt
)。正如@Justin所建议的,尝试
melt
您的数据。然后您将有三个预测变量:“治疗”、“DCA.f”和“变量”。你可以看看我试图为类似的设置(3个预测值)提供答案的地方。我相信还有其他很好的答案!