gpt4 book ai didi

r - 使用 ggplot2 根据其大小(即数值)对条形图进行排序

转载 作者:行者123 更新时间:2023-12-04 11:46:37 25 4
gpt4 key购买 nike

This question询问有关根据未汇总表对条形图进行排序的问题。我的情况略有不同。这是我的原始数据的一部分:

experiment,pvs_id,src,hrc,mqs,mcs,dmqs,imcs
dna-wm,0,7,9,4.454545454545454,1.4545454545454546,1.4545454545454541,4.3939393939393945
dna-wm,1,7,4,2.909090909090909,1.8181818181818181,0.09090909090909083,3.9090909090909087
dna-wm,2,7,1,4.818181818181818,1.4545454545454546,1.8181818181818183,4.3939393939393945
dna-wm,3,7,8,3.4545454545454546,1.5454545454545454,0.4545454545454546,4.272727272727273
dna-wm,4,7,10,3.8181818181818183,1.9090909090909092,0.8181818181818183,3.7878787878787876
dna-wm,5,7,7,3.909090909090909,1.9090909090909092,0.9090909090909092,3.7878787878787876
dna-wm,6,7,0,4.909090909090909,1.3636363636363635,1.9090909090909092,4.515151515151516
dna-wm,7,7,3,3.909090909090909,1.7272727272727273,0.9090909090909092,4.030303030303029
dna-wm,8,7,11,3.6363636363636362,1.5454545454545454,0.6363636363636362,4.272727272727273

我只需要一些变量,即 mqsimcs ,按他们的 pvs_id 分组,所以我创建了一个新表:
m = melt(t, id.var="pvs_id", measure.var=c("mqs","imcs"))

我可以将其绘制为条形图,从中可以看到 MQS 和 IMCS 之间的相关性。
ggplot(m, aes(x=pvs_id, y=value)) 
+ geom_bar(aes(fill=variable), position="dodge", stat="identity")



但是,我想要 结果柱按 MQS 值排序 ,从左到右,依次递减。当然,IMCS 值应该与这些值一起排序。

我怎样才能做到这一点?一般来说,给定任何熔化的数据框——这对于在 ggplot2 中绘制图形似乎很有用,今天是我第一次偶然发现它——我如何指定一个变量的顺序?

最佳答案

一切都在制作中
pvs_id一个因素并为其提供适当的水平:

dat$pvs_id <- factor(dat$pvs_id, levels = dat[order(-dat$mqs), 2])

m = melt(dat, id.var="pvs_id", measure.var=c("mqs","imcs"))

ggplot(m, aes(x=pvs_id, y=value))+
geom_bar(aes(fill=variable), position="dodge", stat="identity")

这会产生以下图:



编辑:
自从 pvs_id是数字,它以有序的方式处理。如果您有一个因素,则不会假设任何顺序。所以即使你有数字标签 pvs_id实际上是一个因子(名义)。而至于 dat[order(-dat$mqs), 2]关注带有负号的 order 函数沿变量 mqs 从最大到最小对数据帧进行排序。 .但您对 pvs_id 的订单感兴趣变量,以便您索引该列,即第二列。如果你把它拆开,你会看到它给你:
> dat[order(-dat$mqs), 2]
[1] 6 2 0 5 7 4 8 3 1

现在您将其提供给 levels factor 的论据这会根据您的需要对因子进行排序。

关于r - 使用 ggplot2 根据其大小(即数值)对条形图进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12476440/

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