【问题标题】:Plot appearance changes based on RStudio window size and plotting method根据 RStudio 窗口大小和绘图方法绘制外观变化
【发布时间】:2020-09-30 18:12:07
【问题描述】:

我正在尝试使用 vioplot 包在 R 中绘制分布;我的图由点的散点图组成,小提琴图(代表这些点的“箱”)绘制在散点图的顶部。

但是,绘制数据的不同方法会导致图中的特征略有不同。如果使用循环绘制所有小提琴图,则小提琴图尾部将向下延伸到最低点,但如果单独绘制,小提琴图尾部不会到达异常值。此外,调整绘图窗口的大小(然后重新绘图)也会改变小提琴绘图尾部的显示方式。

因为我得到了这些不同的图,我想知道如何判断哪个图是数据的正确表示,以及如何产生一致的结果。我在 vioplot 中使用了 'range' 和 'coef' 参数来使绘图更加一致,但这并没有奏效。

谢谢!

【问题讨论】:

    标签: r


    【解决方案1】:

    也许我错了,但我认为小提琴本身并没有真正定义,只是一种易于查看的数据表示。另一方面,箱线图(也与小提琴内的 vioplot 一起绘制)更为重要,因为它的条形图告诉您第 50、第 25 和第 75 个百分位数(尽管 vioplot 中的第 5 个由于某种原因是一个白点),并且胡须取决于你的绘图方式,但在 vioplot 的情况下,我认为它是第 95 个和第 5 个百分位数。

    如果您想要更高的可定制性,请使用 ggplot:

    library(reshape2) #for melt()
    library(ggplot2)
    uniform<-runif(200,-4,4)
    normal<-rnorm(200,0,3)
    df <- data.frame(x=normal, y=uniform) %>% melt()
    
    ggplot(df, aes(x=variable, y=value)) +
      geom_violin() +
      geom_boxplot()
    

    如果您想绘制所有数据点而不仅仅是异常值,您可以使用 ggbeeswarm,而不显示 geom_boxplot 中的异常值:

    library(ggbeeswarm)
    
    ggplot(df, aes(x=variable, y=value)) +
      geom_violin() +
      geom_boxplot(outlier.alpha = 0) +
      geom_beeswarm()
    

    【讨论】:

    • 感谢您的回答。我发现 ggplot 更容易使用,并且在绘制小提琴图时肯定更加一致 - 它也比 vioplot() 函数更可定制。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多