我有两个数据集,我希望在单个散点图上看到一个单轴。一个数据集的Y值范围为0到0.0006,另一个数据集介于0和1之间。
每个数据集有50个条目。
在R中,是否有一种方法可以在0.0006标记处更改y轴的比例,以显示图形的两半中的细节,例如,0 - 0.0006和0.0006 - 1的范围将是相同的大小图表。
答案 0 :(得分:0)
答案 1 :(得分: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
答案 2 :(得分:0)
假设您有两个不同的数据源(并且来自任一源的值可以是<0.0006),我们可以将它们组合起来,创建一个指示值,该值是否为<0.0006,然后使用facet_wrap
free
刻度。像这样:
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")