拆分矩阵的列,对每个列的点图进行排序,然后在图中进行布局

Lor*_*ein 2 r

我有一个数据矩阵(行名和列名).我想对每列数据做一个圆点图,每个图表中的数据从最大到最小排序,然后在图中的另一个上面布置这些图.

例如,如果我有以下矩阵:

> X
     W    X    Y     Z
A 11.7  8.7 15.4 100.0
B 18.1 11.7  9.0  13.6
C 10.0 20.3 37.0  19.3
D 41.0 30.9 20.0  35.1
E 66.0  3.0 71.1  50.0
Run Code Online (Sandbox Code Playgroud)

我想做四个点图(列"W","X","Y","Z"),每个图表的数据从最大到最小排序,图表排列在另一个之上.

(请注意,这dotchart(X)不起作用,因为每列的排序会有所不同,请参阅问题4654181)

允许我这样做的R命令序列是什么?

42-*_*42- 6

 apply(X, 2, sort)
        W    X    Y     Z
[1,] 10.0  3.0  9.0  13.6
[2,] 11.7  8.7 15.4  19.3
[3,] 18.1 11.7 20.0  35.1
[4,] 41.0 20.3 37.0  50.0
[5,] 66.0 30.9 71.1 100.0

 dotchart(apply(X, 2, sort))
Run Code Online (Sandbox Code Playgroud)

替代文字

编辑:要添加正确排序的标签,您需要在列上使用names()然后按列值排序():

dotchart(apply(X, 2, sort), 
         labels=apply(X, 2, function(x) names(x)[order(x)] )
          )
Run Code Online (Sandbox Code Playgroud)

替代文字