如何在R中绘制行方式矩阵?

时间:2016-01-02 18:13:28

标签: r matrix boxplot

我有一个@media print { img { max-width: none !important; } } ,有8列。对于每一行,我都希望绘制一个单一的箱线图。我更喜欢箱形图在一个地块中。因此,下面的示例应该生成4个箱图(每个8个值) - 所有这些都在一个图像中。

数据示例:

matrix

到目前为止,我已尝试过:

> data[2:5,]
     [,1] [,2] [,3]      [,4]      [,5]      [,6]      [,7]      [,8]     
[1,] 0.6  0.5  0.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185
[2,] 0.5  0.5  0.5357143 2.5357143 0.5357143 0.5357143 0.5357143 0.5185185
[3,] 0.5  0.7  0.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185
[4,] 0.5  0.5  1.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185

这个方法来自this SO post

> boxplot(data[2:5,])
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) : 
  'x' must be atomic

我已经挣扎多年了。你能不能给我提示?

EDIT1:

> boxplot(as.list(as.data.frame(data[2:5,])))
Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) : 
   'x' must be atomic

2 个答案:

答案 0 :(得分:6)

要从矩阵中绘制箱图,我们可以使用boxplot.matrix函数:

boxplot.matrix(data, use.cols = FALSE)

答案 1 :(得分:4)

我认为您需要使用t()函数来转置该矩阵,因为R通常以列为基础进行矩阵运算:

nums<-scan(text=" 0.6  0.5  0.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185
 0.5  0.5  0.5357143 2.5357143 0.5357143 0.5357143 0.5357143 0.5185185
 0.5  0.7  0.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185
 0.5  0.5  1.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185")
Read 32 items

 mat<- matrix(nums, nrow=4,byrow=TRUE)
 mat
     [,1] [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]
[1,]  0.6  0.5 0.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185
[2,]  0.5  0.5 0.5357143 2.5357143 0.5357143 0.5357143 0.5357143 0.5185185
[3,]  0.5  0.7 0.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185
[4,]  0.5  0.5 1.5357143 0.5357143 0.5357143 0.5357143 0.5357143 0.5185185
> boxplot(mat)   # Not correct
> boxplot( t(mat) )

enter image description here

编辑后,我们现在可以看到data - 对象是一个相当奇怪的对象。它是一个带有维度属性的列表,因此它被打印为矩阵,但在传递给其他函数时它没有正常运行。