我的数据:
类似于这样:
name year Var1 Var2 Var3
A 1 0.67 0.97 0.75
A 2 0.19 0.89 0.63
A 3 0.07 0.30 0.95
B 1 0.05 0.66 0.94
B 2 0.43 0.27 0.51
B 3 0.63 0.42 0.13
C 1 0.03 0.26 0.18
C 2 0.70 0.24 0.09
C 3 0.06 0.83 0.03
D 1 0.40 0.16 0.27
D 2 0.10 0.80 0.17
D 3 0.57 0.10 0.78
E 1 0.07 0.66 0.63
E 2 0.00 0.02 0.90
E 3 0.91 0.54 0.17
我想做什么:
一个堆积条形图,其中变量“name”在x轴上。 条形应代表所有可用年份的var1-3的平均值。 最后,X轴应该排名,因此左侧较低的堆积条形图,右侧较高的堆积条形图。
它应该看起来像:
Average Var1 Var2 Var3 Total (var1-3)
A 0.31 0.72 0.78 1.81
B 0.37 0.45 0.53 1.35
C 0.26 0.44 0.10 0.81
D 0.36 0.35 0.41 1.12
E 0.33 0.41 0.57 1.30
我所做的事情:
我认为这个任务涉及许多步骤,我已经花了一天半的时间在研究上。
我尝试对数据进行排名,并创建了一个总变量[total = var1+ var2 + var3]
。我使用melt函数将数据从宽格式转换为长格式。
longdata <- melt(widedata, id.vars = c("name","year", "total")
尝试对其进行排名:
longdata <- transform(longdata, name = reorder(name, total))
并绘制它(惨败):
ggplot(longdata, aes(x=name, y=longdata$value, fill=factor(variable))) + geom_bar(stat="identity")
ggplot(longdata, aes(x=name, y=reorder(value, total)
, 等等吗?我没有加载您的数据并运行它,但这可能会按总数递增地放置条形图。 - lawyeR