我有兩個數據集,我希望在單個散點圖上看到單軸。一個數據集的Y值範圍從0到0.0006,另一個在0和1之間。在同一圖形上繪製兩個不同比例的數據集,同一個座標軸R
每個數據集有50個條目。
在R中,是否有一種方法可以在0.0006標記處改變y軸的刻度,以顯示圖形的兩半部分的細節,例如0 - 0.0006和0.0006 - 1的範圍將是相同的尺寸在圖上。
我有兩個數據集,我希望在單個散點圖上看到單軸。一個數據集的Y值範圍從0到0.0006,另一個在0和1之間。在同一圖形上繪製兩個不同比例的數據集,同一個座標軸R
每個數據集有50個條目。
在R中,是否有一種方法可以在0.0006標記處改變y軸的刻度,以顯示圖形的兩半部分的細節,例如0 - 0.0006和0.0006 - 1的範圍將是相同的尺寸在圖上。
您可以擴展您的數據進行繪圖,然後調用軸兩次:
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.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")
這可能是有用的:http://stackoverflow.com/questions/7194688/using-ggplot2-can-i-insert-a-break-in-the-軸 –
@MikeyMike - 我應該在問題中說明我正在使用散點圖,表中有太多數據 –
您是否願意面向劇情?有一個方面是你的非常小的價值觀,其他方面呢? –