我试图将我的两个q-plot(A和B)保存为pdf或png。对于两个图,X和Y轴具有相同的单位(以米为单位的距离)。两个图的Xlim和Ylim是不同的。我希望当我显示pdf文件时,图B中1m的表示等于1m。
就我而言:
xlim.A=c(3,6)
ylim.A=c(-.2,1.5)
xlim.B=c(10,11)
ylim.B=c(0,4)
x <- seq(from=xlim.A[1],to=xlim.A[2],length.out=100)
y <- seq(from=ylim.A[1],to=ylim.A[2],length.out=100)
A <- data.frame(x=x,y=y)
x <- seq(from=xlim.B[1],to=xlim.B[2],length.out=100)
y <- seq(from=ylim.B[1],to=ylim.B[2],length.out=100)
B <- data.frame(x=x,y=y)
require(ggplot2)
my.plot.A <- qplot(A$x,A$y,asp=(ylim.A[2]-ylim.A[1])/(xlim.A[2]-xlim.A[1]),xlab="Distance (m)",
ylab="Elevation (m)")
my.plot.B <- qplot(B$x,B$y,asp=(ylim.B[2]-ylim.B[1])/(xlim.B[2]-xlim.B[1]),xlab="Distance (m)",
ylab="Elevation (m)")
ggsave("plot_A.pdf",plot=my.plot.A,scale=1)
ggsave("plot_B.pdf",plot=my.plot.B,scale=1)
通过这样做,第一个文件中1m的等效距离不等于第二个文件中的1m。我怎样才能使它们平等? 感谢
答案 0 :(得分:0)
通过使用asp,您强制两个图表具有不同的比例。以印刷形式匹配它们将非常困难。
相反,您可以使用较大的图形,然后根据需要进行裁剪,从而确保正确的比例。
xscale <- c(min(xlim.A[[1]], xlim.B[[1]]), max(xlim.A[[2]], xlim.B[[2]]))
yscale <- c(min(ylim.A[[1]], ylim.B[[1]]), max(ylim.A[[2]], ylim.B[[2]]))
sameScale <- coord_cartesian(xlim=xscale, ylim=yscale)
plotA <- qplot(A$x,A$y) + sameScale
plotB <- qplot(B$x,B$y) + sameScale