2016-08-11 141 views
0

我有两个数据集,我希望在单个散点图上看到单轴。一个数据集的Y值范围从0到0.0006,另一个在0和1之间。在同一图形上绘制两个不同比例的数据集,同一个坐标轴R

每个数据集有50个条目。

在R中,是否有一种方法可以在0.0006标记处改变y轴的刻度,以显示图形的两半部分的细节,例如0 - 0.0006和0.0006 - 1的范围将是相同的尺寸在图上。

+0

这可能是有用的:http://stackoverflow.com/questions/7194688/using-ggplot2-can-i-insert-a-break-in-the-轴 –

+0

@MikeyMike - 我应该在问题中说明我正在使用散点图,表中有太多数据 –

+0

您是否愿意面向剧情?有一个方面是你的非常小的价值观,其他方面呢? –

回答

0

我用对数标度做了这个,这是一个样本数据集,它不会一直到1,但是会在0.07左右点击。

我仍然对其他技术开放,因为这个过分强调0.0006-0范围。

enter image description here

0

您可以扩展您的数据进行绘图,然后调用轴两次:

y1<-runif(50,0,0.0006) 
y2<-runif(50,0.0006,1) 
x<-runif(50) 

y1.scaled<-y1*(0.5/0.0006) 
y2.scaled<-(y2-0.0006)*(1-0.5)/(1-0.0006) + 0.5 

plot(c(0,1),c(0,1),col=NA,yaxt='n',ylab="",xlab="") 

    points(x,y1.scaled,pch=20,col="red") 
    points(x,y2.scaled,pch=21,col="black") 

axis(2,at=seq(0,0.5,length.out = 3), labels = c(0,0.0003,0.0006), col="red") 
axis(2,at=seq(0.5,1,length.out = 3), labels = seq(0.0006,1,length.out=3)) 

看到这个职位对于如何重新尺度的一组数字与已知的最小和最大的任何其他的最小值和最大值: How to scale down a range of numbers with a known min and max value

0

假设你有两个不同的数据源(以及从任何来源值可以是< 0.0006),我们可以将它们结合起来,对于是否创建一个指标ñ其值为< 0.0006,然后使用带有free比例的facet_wrap。事情是这样的:

library(ggplot2) 
set.seed(1) 
y1<-runif(50,0,0.0006) 
y2<-runif(50,0,1) 
x<-1:50 
df<-as.data.frame(rbind(cbind(y1,x),cbind(y2,x))) #Combine data 
df$y1 <- as.numeric(as.character(df$y1)) 
df$x <- as.numeric(as.character(df$x)) 
df$group <- (df$y1 <= 0.0006) #Create group 

#ggplot with facet 
ggplot(data=df) + geom_point(aes(y=y1,x=x)) + facet_wrap(~grp,scales="free") 

enter image description here

相关问题