gpt4 book ai didi

r - 堆积和排名条形图

转载 作者:行者123 更新时间:2023-12-02 00:03:04 25 4
gpt4 key购买 nike

我拥有的数据:

类似的东西:

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

我正在尝试做的事情:

x 轴上带有变量“name”的堆积条形图。条形图应代表所有可用年份 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

我做了什么:

我认为这个任务涉及很多步骤,我已经敷衍了1天半了。

我尝试对数据进行排名,创建一个总变量[total = var1+ var2 + var3]。我使用熔化函数将数据从宽格式重新调整为长格式。

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")

最佳答案

您可以使用 dplyr 包汇总数据,然后重新绘制它的图形:

# reading the data
df <- read.table(text="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", header=TRUE)

# creating the 'Total' variable
df$Total <- rowSums(df[,3:5])

# summarising your data
require(dplyr)
newdf <- df %>%
group_by(name) %>%
summarise(var1=mean(Var1), var2=mean(Var2), var3=mean(Var3), tot=mean(Total))

# reordering according to 'tot' value
newdf <- transform(newdf, name = reorder(name, tot))

# from wide to long
melted <- melt(newdf, id="name")

# creating the plot
ggplot(melted, aes(x=name, y=value, fill=factor(variable))) +
geom_bar(stat="identity") +
theme_bw()

给出: enter image description here

<小时/>

您还可以将条形图彼此相邻放置(以便您可以更好地相互比较):

ggplot(melted, aes(x=name, y=value, fill=factor(variable))) + 
geom_bar(stat="identity", position="dodge") +
theme_bw()

给出: enter image description here

关于r - 堆积和排名条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23930835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com