期望的行为:我想创建我的数据集的多个列的分组条形图,根据具有低、中和高值的分类变量绘制分组条形图。例如,对于下面显示的数据集,我想为 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] 删除。
我来说两句