1

我正在尝试将我的两个 q 图(A 和 B)保存为 pdf 或 png。对于这两个图,X 轴和 Y 轴具有相同的单位(距离以米为单位)。两个图的 Xlim 和 Ylim 是不同的。当我显示 pdf 文件时,我希望图 A 中 1m 的表示等于图 B 中的 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。我怎样才能让他们平等?谢谢

4

1 回答 1

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
于 2012-11-26T03:21:12.283 回答