【问题标题】:Align X axis of scatterplot and boxplot对齐散点图和箱线图的 X 轴
【发布时间】:2015-05-20 16:14:51
【问题描述】:

我在 R 中叠加两张图像。一张是箱线图(使用boxplot()),另一张是散点图(使用scatterplot())。我注意到沿 x 轴的比例存在差异。 (A) 是箱线图比例。 (B) 用于散点图。

我一直在尝试重新调整 (B) 以适应 (A)。我注意到散点图中有一个称为 xlim 的条件。试过了,没用。我还注意到这个例子是在我输入问题时出现的:Change Axis Label - R scatterplot

试过了,没用。

如何修改 x 轴以将比例从 1.0、1.5、2.0、2.5、3.0 更改为简单的 1、2、3。

在 Stata 中,我知道您可以指定 x 轴范围,然后指出之间的步进。例如,范围可能是 0-100,每个可测量点都设置为 10。所以你最终会得到 10、20、....、100。

就目前而言,我的 R 代码如下所示:

library(car)
boxplot(a,b,c) 
par(new=T)
scatterplot(x, y, smooth=TRUE, boxplots=FALSE) 

我尝试过修改散点图,但没有成功:

scatterplot(x, y, smooth=TRUE, boxplots=FALSE, xlim=c(1,3))

【问题讨论】:

  • 你能给个reproducible example吗?
  • 嗨,Jaap。编辑了问题。只是想摆脱那些讨厌的一半。
  • 您的数据的(一部分)dput 会很好。
  • 在这种情况下,您可能希望使用as.factor 将可变量更改为因子。
  • xlim 标志放在箱线图和散点图中可能会有所帮助。然而,没有数据示例很难测试。

标签: r plot


【解决方案1】:

正如在 cmets 中提到的使用 as.factor,那么 xaxis 应该对齐。这是ggplot的解决方案:

#dummy data
dat1 <- data.frame(group=as.factor(rep(1:3,4)),
                   var=c(runif(12)))
dat2 <- data.frame(x=as.factor(1:3),y=runif(3))


library(ggplot2)
library(grid)
library(gridExtra)

#plot points on top of boxplot
ggplot(dat1,aes(group,var)) +
  geom_boxplot() +
  geom_point(aes(x,y),dat2)

绘制为单独的图

gg_boxplot <- 
      ggplot(dat1,aes(group,var)) +
      geom_boxplot()

gg_point <- 
  ggplot(dat2,aes(x,y)) +
  geom_point()

grid.arrange(gg_boxplot,gg_point,
             ncol=1,
             main="Plotting is easier with ggplot")

编辑 按照@RuthgerRighart 的建议使用 xlim

#dummy data - no factors
dat1 <- data.frame(group=rep(1:3,4),
                   var=c(runif(12)))
dat2 <- data.frame(x=1:3,y=runif(3))

par(mfrow=c(2,1))
boxplot(var~group,dat1,xlim=c(1,3))
plot(dat2$x,dat2$y,xlim=c(1,3))

【讨论】:

  • 是的,但它并没有给我/确切/我所追求的,这就是我求助于叠加箱线图和散点图的原因。 Ruthger 建议在箱线图和散点图中简单地使用 xlim 变量来修复它。感谢您的回复。非常感谢。
  • @user2722253 已更新为 xlim 解决方案。要获得“您所追求的准确”,请提供可重现的数据和/或预期的绘图图像。
猜你喜欢
  • 2017-11-16
  • 2014-03-31
  • 2016-06-22
  • 2017-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
相关资源
最近更新 更多