2016-08-11 169 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

相關問題