在多个图表中缩放的边距文本绘制?

3

我已经创建了一个带有两个y轴的图表,并使用mtext()函数标记右侧的y轴。

# generate some data to plot
x <- 1:5
y1 <- rnorm(5)
y2 <- rnorm(5,20)

# set margins
par(mar=c(5,4,4,5)+.1)

# plot first x/y line
plot(x,y1,type="l",col="red")

#plot second x/y line
par(new=TRUE)
plot(x, y2,,type="l",col="blue",xaxt="n",yaxt="n",xlab="",ylab="")
axis(4)
mtext("y2",side=4,line=3)

这个功能单独使用非常好。但是,如果将其放入具有多个图形的图中:

# create a 3x3 figure for multiple plots
par(mfrow = c(3, 3))

# generate some data to plot
x <- 1:5
y1 <- rnorm(5)
y2 <- rnorm(5,20)

# set margins
par(mar=c(5,4,4,5)+.1)

# plot first x/y line
plot(x,y1,type="l",col="red")

#plot second x/y line
par(new=TRUE)
plot(x, y2,,type="l",col="blue",xaxt="n",yaxt="n",xlab="",ylab="")
axis(4)
mtext("y2",side=4,line=3)

在这里,左侧y轴标签变小了,而右侧轴没有变化。

我知道这种行为的原因是mtext()中的cex参数并不是相对于par("cex")的;我想找到一种解决方法。


1
使用 par(mfrow = ...) 进行多个图形的绘制是一件非常痛苦的事情。建议尝试使用 ggplot2lattice 库来进行绘图。 - Michael Hoffman
1个回答

2
最好的解决方法是使用par()$cex属性。因此,您的代码应该是:
x <- 1:5
y1 <- rnorm(5)
y2 <- rnorm(5,20)

par(mfrow = c(3, 3), mar=c(5,4,4,5)+.1)
plot(x,y1,type="l",col="red")
par(new=TRUE)
plot(x, y2,,type="l",col="blue",xaxt="n",yaxt="n",xlab="",ylab="")
axis(4)
mtext("y2",side=4,line=3, cex=par()$cex)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接