我在R中绘制的一些类型图表的数据
http://graphpad.com/faq/images/1352-1(1).gif
有超出范围的异常值,我不能只排除它们。我尝试使用plotrix的axis.break()函数,但该函数不会重新缩放y轴。它只是在轴上放置一个断裂标记。这样做的目的是能够在一个绘图框中显示两个组的中位数,以及数据点和异常值。从本质上讲,远离大多数的数据点占据了一大块空间,而且大多数点被压扁,没有显示出太大的差异。这是代码:
https://gist.github.com/9bfb05dcecac3ecb7491
任何建议都会有所帮助。
由于
答案 0 :(得分:3)
不幸的是,您链接到的代码不是自包含的,但是gap.plot()
的代码可能无法正常工作,因为您设置ylim
来覆盖完整数据范围而不是绘制的部分。请考虑以下图:
如您所见,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
帮助页面上的链接轻松找到。那里有一个有效的例子。