使用轴断点在分组散点图中重新调整轴

时间:2012-09-14 15:17:22

标签: r plot scatter-plot plotrix

我在R中绘制的一些类型图表的数据

http://graphpad.com/faq/images/1352-1(1).gif

有超出范围的异常值,我不能只排除它们。我尝试使用plotrix的axis.break()函数,但该函数不会重新缩放y轴。它只是在轴上放置一个断裂标记。这样做的目的是能够在一个绘图框中显示两个组的中位数,以及数据点和异常值。从本质上讲,远离大多数的数据点占据了一大块空间,而且大多数点被压扁,没有显示出太大的差异。这是代码:

https://gist.github.com/9bfb05dcecac3ecb7491

任何建议都会有所帮助。

由于

2 个答案:

答案 0 :(得分:3)

不幸的是,您链接到的代码不是自包含的,但是gap.plot()的代码可能无法正常工作,因为您设置ylim来覆盖完整数据范围而不是绘制的部分。请考虑以下图:scatterplot with gap in y axis

如您所见,y轴每50 pg / ml有一个刻度线,但在175和425之间有一个间隙。所以数据范围(到最接近的50)是c(0, 500)但是范围是y轴是c(0, 250) - 它只是将200和250的刻度线视为450和500的刻度线。

此图是使用以下修改版代码生成的:

## made up data
GRO.Controls <- c(25, 40:50, 60, 150)
GRO.Breast <- c(70, 80:90, 110, 500)

##Scatter plot for both groups
library(plotrix)
gap.plot(jitter(rep(0,length(GRO.Controls)),amount = 0.2), GRO.Controls,
         gap = c(175,425), xtics = -2, # no xtics visible
         ytics = seq(0, 500, by = 50),
         xlim = c(-0.5, 1.5), ylim = c(0, 250), 
         xlab = "", ylab = "Concentrations (pg/ml)", main = "GRO(P=0.0010)")
gap.plot(jitter(rep(1,length(GRO.Breast)),amount = 0.2), GRO.Breast,
         gap = c(175, 425), col = "blue", add = TRUE)

##Adds x- variable (groups) labels
mtext("Controls", side = 1, at= 0.0)
mtext("Breast Cancer", side = 1, at= 1.0)

##Adds median lines for each group
segments(-0.25, median(GRO.Controls), 0.25, median(GRO.Controls), lwd = 2.0)
segments(0.75, median(GRO.Breast), 1.25, median(GRO.Breast), lwd = 2.0, 
    col = "blue")

答案 1 :(得分:2)

您可以使用gap.plot(),这可以通过axis.break帮助页面上的链接轻松找到。那里有一个有效的例子。