R从数据帧的一行分组条形图

时间:2013-11-13 03:43:41

标签: r

我有一个数据框:

                X2    X13    X18     X3   X15    X19
comp162192_c0 194.63 118.80 149.67  71.02 59.49  75.03
comp166160_c1 535.49 595.86 535.97 171.93 86.01 268.39
comp149395_c1  45.98  99.92  74.21  26.46 14.72  27.69

我想从这一数据的一行产生一个条形图,以便将来自X2,X13和X18的值分组,并将来自X3,X15,X19的值分组。即。一组3个垂直条,值194.63 118.80 149.67,一个间隙,然后是一组3个垂直条,值为71.02 59.49 75.03

看不到一个简单的方法来做到这一点。我错过了一些我知道的东西,但是我无法做出教程的头脑和尾部。

1 个答案:

答案 0 :(得分:0)

如果您阅读了barplot()函数的帮助文件,您将看到参数height的解释,

  

...描述制作条形的值的向量或矩阵   情节。 ...如果height是一个矩阵而旁边是TRUE,那么   每列中的值并列而不是堆叠。

因此,您需要重新排列数据,以便您要绘制的数字组位于矩阵中的单个列中。您可以使用cbind()函数对要绘制的三个值中的每个值执行此操作。

df <- structure(list(X2 = c(194.63, 535.49, 45.98), X13 = c(118.8, 
    595.86, 99.92), X18 = c(149.67, 535.97, 74.21), X3 = c(71.02, 
    171.93, 26.46), X15 = c(59.49, 86.01, 14.72), X19 = c(75.03, 
    268.39, 27.69)), .Names = c("X2", "X13", "X18", "X3", "X15", 
    "X19"), class = "data.frame", row.names = c("comp162192_c0", 
    "comp166160_c1", "comp149395_c1"))

barplot(cbind(unlist(df[1, 1:3]), unlist(df[1, 4:6])), beside=TRUE)

(请注意,我使用dput()函数以其他人可以在R中轻松访问数据的方式共享您的数据。)