【发布时间】:2020-07-13 12:29:23
【问题描述】:
如果帖子不清楚,请提前抱歉。 所以我有我的数据框、74 个观察值和 43 列。我对它们进行了聚类分析。 然后我得到了 5 个集群,并将集群编号分配给每一行。 现在, 我的 df 有 74 行(obs)和 44 个变量。对于所有变量,我想在每个集群中绘制并查看哪些变量是丰富的,哪些变量不是。
我想通过 ggplot 来实现这一点。 我想象的输出面板是每行有 5 个箱线图和 42 行图,每行将描述数据集中测量的变量。
数据集示例(抱歉,它太大了,所以我做了一个例子,实际值不同)
df
ID EGF FGF_2 Eotaxin TGF G_CSF Flt3L GMSF Frac IFNa2 .... Cluster
4300 4.21 139.32 3.10 0 1.81 3.48 1.86 9.51 9.41 .... 1
2345 7.19 233.10 0 1.81 3.48 1.86 9.41 0 11.4 .... 1
4300 4.21 139.32 4.59 0 1.81 3.48 1.86 9.51 9.41 .... 1
....
3457 0.19 233.10 0 1.99 3.48 1.86 9.41 0 20.4 .... 3
5420 4.21 139.32 3.10 0.56 1.81 3.48 1.86 9.51 29.8 .... 1
2334 7.19 233.10 2.68 2.22 3.48 1.86 9.41 0 28.8 .... 5
str(df)
$ ID : Factor w/ 45 levels "4300"..... : 44 8 24 ....
$ EGF : num ....
$ FGF_2 : num ....
$ Eotaxin : num ....
....
$ Cluster : Factor w/ 5 levels "1" , "2"...: 1 1 1.....3 1 5
#now plotting
#thought I pivot the datafram
new_df <- pivot_longer(df[,2:44],df$cluster, names_to = "Cytokine measured", values_to = "count")
#ggplot
ggplot(new_df,aes(x = new_df$cluster, y = new_df$count))+
geom_boxplot(width=0.2,alpha=0.1)+
geom_jitter(width=0.15)+
facet_grid(new_df$`Cytokine measured`~new_df$cluster, scales = 'free')
因此,代码确实生成了一小部分符合我想象输出的图表。但我只能看到 5 行而不是 42 行。
回到 new_df,最后 3 列引起了我的注意:
Cluster Cytokine measured count
1 EGF 2.66
1 FGF_2 390.1
1 Eotaxin 6.75
1 TGF 0
1 G_CSF 520
3 EGF 45
5 FGF_2 4
4 Eotaxin 0
1 TGF 0
1 G_CSF 43
....
因此,簇数和计数列似乎是正确的,而测量的细胞因子只是不断重复 5 个变量名称,而不是我想查看的总共 42 个变量。
我认为表格转换步骤是错误的,但我不太清楚出了什么问题以及如何解决它。
请赐教。
【问题讨论】:
-
请修改您的问题,使其他人可以重现:stackoverflow.com/questions/5963269/… 这是本论坛的标准做法,可帮助人们为您提供更好的答案,减少因潜在误解而浪费的时间。
标签: r ggplot2 cluster-analysis