在 R 中为多个聚类列创建分组条形图

菲莎·陶奇尔

期望的行为:我想创建我的数据集的多个列的分组条形图,根据具有低、中和高值的分类变量绘制分组条形图。例如,对于下面显示的数据集,我想为 x 轴上的每个“B”、“M”、“LA”等创建一个三组条形图,同时填充每个三个的条形-根据类别按其值的平均值分组。

我已经尝试了以下代码来解决这个问题,但我似乎无法理解我在这里做错了什么,因为代码抛出了值没有按维度加起来的错误。任何人都可以让我知道这里的错误是什么,据我所知,ggplot 的所有填充方面似乎都符合我的要求?...

df <- data.frame(B=c(1,2,4,-5,8,9,8,4,5),GM=c(5,5,4,-7,9,8,7,-4,6),
             LA=c(-5,8,5,-8,4,5,6,1,7), NS= c(-5,-8,-5,-8,4,5,-6,1,7), 
SL=c(-5,8,5,-8,-4,-5,6,-1,-7), data.SWASH_group=c("low", "medium", "low", 
"high", "high", "low", "medium", "low", "high"))

species=c(df$B, df$GM, df$LA, df$NS, df$SL)

condition=c(df$data.SWASH_group=="low", df$data.SWASH_group=="medium", 
df$data.SWASH_group=="high")

value=c(mean(df$B), mean(df$GM), mean(df$LA), mean(df$NS), mean(df$SL))

# For Grouping
library(ggplot2)

ggplot(df, aes(fill=condition, y=value, x=species)) + 
geom_bar(position="dodge", stat="identity")

This is how the head of my real dataset - df - looks like (The one in the 
code is just for example purposes):

B           GM          LA          NS          SL          data.SWASH_group
561.5806    533.5484    602.4000    675.4706    621.5758    low
780.5758    615.8788    801.8788    589.2903    875.0938    medium
649.9697    658.9091    789.1818    638.4412    646.5455    medium

...我希望输出看起来像这样:

在此处输入图片说明

这是我自己的代码产生的输出:

在此处输入图片说明

多米尼克

我们需要可重现的数据来解决您的问题。但如果我正确理解了你的描述,这应该有效:

library(ggplot2)
library(dplyr)
library(reshape2)

df <- data.frame(A=c(1,2,4,5,8,9,8,4,5),B=c(5,5,4,7,9,8,7,4,6),
                 C=c(5,8,5,8,4,5,6,1,7), 
                 group.var=c("low", "medium", "low", "high", "high", "low", "medium", "low", "high"))

df.agg <- df %>% group_by(group.var) %>% summarise_all(funs(mean))
df.agg <- melt(df.agg)

ggplot(df.agg) + 
  geom_bar(aes(x=variable, y = value, fill = as.factor(group.var)),
           position="dodge", stat="identity")

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章