【问题标题】:box-plots row-wise (side by side) of 2 two matrices in R in ONE plot?在一个图中 R 中的 2 个两个矩阵的逐行(并排)箱线图?
【发布时间】:2018-05-30 18:11:17
【问题描述】:

我想在 R 中为 A 和 B(两个矩阵)的每一行创建箱线图。我想让它们都在同一个图中,因为它们共享相同的 x 轴。

这是我的数据(每个矩阵有 20 行 5 列)

A <- matrix( rnorm(100), ncol = 5 )
B <- matrix( rnorm(100), ncol = 5 )

对于每一行,我都想要一个箱线图。要为每个矩阵创建箱线图(逐行,基于 How to boxplot row-wise matrix in R? ),我可以使用:

boxplot(A, use.cols = F, col="red")
boxplot(B, use.cols = F, col="green")

我已经尝试过了,但箱线图不是并排的(重叠):

boxplot(A, use.cols = F, col="red")
par(new=TRUE)
boxplot(B, use.cols = F, col="green")

有什么建议吗?谢谢。

【问题讨论】:

    标签: r


    【解决方案1】:

    我想这可行:

    boxplot(A, use.cols = F, col = "red", par(mfrow = c(1,2)))
    boxplot(B, use.cols = F, col = "green")
    

    【讨论】:

    • 嗨。不幸的是不是我想要的。我想有一个情节。由于每个矩阵有 20 行,我最终会得到 20 个矩阵 A 的箱线图和 20 个矩阵 B 的箱线图。所以我希望 x 轴有 1、2、3、...20,然后例如当 x =1 我将有两个红色和绿色的箱线图(代表矩阵 A 的第 1 行和矩阵 B 的第 1 行)。
    【解决方案2】:

    这是一个简单的例子,可以产生你想要的情节。这包括两个水平箱线图,一个在另一个之上,具有相同的 x 轴:

    data(iris)
    A = data.frame(X="A",
                   Y=iris$Sepal.Length,
                   stringsAsFactors=F)
    B = data.frame(X="B",
                   Y=iris$Sepal.Width,
                   stringsAsFactors=F)
    df = rbind(A,B)
    par(mfrow=c(1,1))
    boxplot(Y~X,
            data=df,
            horizontal=T,
            col=c("red","green"),
            las=2,
            xaxt="n")
    axis(1,at=seq(0,10,1),labels=seq(0,10,1))
    

    【讨论】:

    • 你好。谢谢你的评论。我实际上想得到一个图,其中 x 轴将是 1,2,..19, 20,y 轴将显示与箱形图相对应的值。在情节中,我实际上将有 20 个红色和 20 个绿色箱线图。每个箱线图将代表矩阵的每一行
    • 这个解决方案就是这样做的。您是否混淆了 x 轴和 y 轴? x 轴从左到右,y 轴从下到上。
    • 我希望得到一个类似于我在第一条消息中编写的代码的图,但不幸的是红色方框图与绿色重叠,反之亦然。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2020-07-15
    相关资源
    最近更新 更多