全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
16055 6
2017-07-23
methodclassvalue
TOMd

32

TOMc

23

TOMb

56

TOMa

23

Billd

12

Billc

34

Billb

56

Billa

76

Lilyd

89

Lilyc

12

Lilyb

64

Lilya

32

上面是data,ggplot2的程序为:
ggplot(data,aes(x=method,y=value,fill=class))+geom_bar(stat = "identity",position = "fill")
生成的图是这样的
Rplot.png
请问:如何按class的d(即图中紫色的部分)从小到大排序method?即Bill、TOM、Lily的顺序画图。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-7-23 13:17:19
aes(x=reorder(method, as.numeric(class=='d')*value), y=……)
利用reorder函数,根据as.numeric()*value的值对method排序
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-23 13:52:04
cdl0102 发表于 2017-7-23 13:17
aes(x=reorder(method, as.numeric(class=='d')*value), y=……)
利用reorder函数,根据as.numeric()*valu ...
准确说是对mehod因子变量的levels排序
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-23 15:33:06
cdl0102 发表于 2017-7-23 13:52
准确说是对mehod因子变量的levels排序
您好,可能是我之前表述不太准确,我是想按图中紫色部分的大小把method排序,也就是按d占a、b、c和d之和的比例排序。我试了一下as.numeric(class=='d')*value,这是按d的数值大小排序的,但是数值大可能占a、b、c和d之和的比例小。
这样的话怎么写代码呢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-23 16:45:23
mu1197781069 发表于 2017-7-23 15:33
您好,可能是我之前表述不太准确,我是想按图中紫色部分的大小把method排序,也就是按d占a、b、c和d之和的 ...
试了下,需要先分组求和,然后构造d的比例
先定义
复制代码
然后在reorder里引用a,
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-23 17:10:54
cdl0102 发表于 2017-7-23 16:45
试了下,需要先分组求和,然后构造d的比例
先定义然后在reorder里引用a,
就是这样,太感谢啦!
但是我又有了一个问题:首先按d排序,d相等的情况下按c排序,要是c仍相等则再用b排序...
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群