同一图上的多个笔的游行图

时间:2019-04-08 15:59:01

标签: r plot

我正在使用Pen's Parade做具有不同收入分配的随机优势分析。我可以使用Pen包中的ineq函数绘制单个Pen's Parade,但是我需要进行视觉比较,并且我希望同一图像中有多行。我不知道如何从函数中提取值,所以我无法做到这一点。

我有以下可重复的示例:

set.seed(123) 
x <- rnorm(100)
y <- rnorm(100, mean = 0.2) 
library(ineq) 
Pen(x) 
Pen(y)

我得到以下图:

https://i.stack.imgur.com/qXRBl.png https://i.stack.imgur.com/CaoFA.png

我想获得以下时间:

       https://i.stack.imgur.com/0Zma2.png

2 个答案:

答案 0 :(得分:2)

您可以使用add = TRUE

set.seed(123) 
x <- rnorm(100)
y <- rnorm(100, mean = 0.2) 
library(ineq) 
Pen(x); Pen(y, add = TRUE)

enter image description here

来自help("Pen")

  

添加逻辑。该地块应该添加到现有地块吗?

虽然M-M在评论中提到的解决方案是更通用的解决方案,但在这种特定情况下,它会产生繁忙的Y轴:

Pen(x)
par(new = TRUE) 
Pen(y)

enter image description here

我将以这种方式归纳出有关绘制函数的建议:

  1. 检查绘图功能的帮助文件。如果它有一个add参数,请使用它。
  2. 否则,请使用par(new = TRUE)技术

更新

正如M-M在评论中有帮助地提到的那样,如果您在第二个绘图上手动抑制Y轴,则它们的更一般的解决方案不会产生繁忙的Y轴:

Pen(x)
par(new = TRUE) 
Pen(y, yaxt = "n")

enter image description here

答案 1 :(得分:1)

看着?ineq::Pen()似乎像plot()一样工作;因此,追随者会为您工作。

Pen(x) 
Pen(y, add=T) 

注意: 但是,add=T会删除部分数据,因为第二个图的点超出了第一个图的极限。

使用par(new=T)的更新:

使用par(new=T)基本上意味着将两个地块相互叠加;因此,使它们具有相同的比例非常重要。我们可以通过设置相同的轴限制来实现。也就是说,在使用add=T参数时,希望设置轴的限制以不丢失任何数据部分。这是重叠两个图的最佳实践。

Pen(x, ylim=c(0,38), xlim=c(0,1))
par(new=T)
Pen(y, col="red", ylim=c(0,38), xlim=c(0,1), yaxt='n', xaxt='n')
                 https://i.stack.imgur.com/ZtPTF.png

本质上,您可以使用add=T做同样的事情。