10

我有情节1

curve(exp(x), from=1, to=5, lwd=5)
curve(150-exp(x), from=1, to=5, lwd=5, col="darkblue",add=T)

在里面我想添加以下情节2

par(mar=c(7,7,1,1))
curve(exp(x), from=1, to=5, lwd=7, xlab="chi", ylab="exp(x)", cex.lab=4,axes=F)
axis(1, labels=NA,at=c(0,5))
axis(2, labels=NA,at=c(0,150))
text(1,120,"Alpha",adj=c(0,0),cex=3)
text(3.5,10,"Beta",adj=c(0,0),cex=3)

为了获得以下

结合

我还想让情节 2 透明,这样如果情节 2 后面有情节 1 的某些元素,它们仍然会显示(就像蓝线一样)。同样重要的是情节 2 的较大标签以及它的轴上没有标签和刻度。

这可能吗?请仅基于 R 解决方案(无 ggplot2 / 无 lattice)

4

2 回答 2

17

好的,这是一个示例,我将其绘制为 10 x 10 英寸的 pdf。(使用 et al. 令人沮丧的部分原因par(fig = )是它们的效果在很大程度上取决于绘图设备的大小。)


编辑添加一些解释:

基本图形绘图参数par("fig")将图形区域的位置描述/设置为“绘图区域”(通常是整个设备,对于单个图形绘图)的一部分。它采用长度为 4 的向量,其形式由和c(xmin, xmax, ymin, ymax)之间的数字(比例)组成。01

在这里,我使用grconvertX()andgrconvertY()将 xy 位置以较大图自己的(aka "user")坐标系表示的坐标系转换为"ndc"(标准化设备坐标)坐标系。坐标系对"user"人类用户更友好,而. 这些调用只是为了在它们之间执行翻译。"ndc"par("fig")grconvert*()

## pdf("fig-in-fig.pdf", width=10, height=10)
curve(exp(x), from=1, to=5, lwd=5)
curve(150-exp(x), from=1, to=5, lwd=5, col="darkblue",add=T)

## Here's the bit I added.
par(fig = c(grconvertX(c(1, 3), from="user", to="ndc"),
            grconvertY(c(50, 125), from="user", to="ndc")),
    mar = c(4,6,1,1),
    new = TRUE)

curve(exp(x), from=1, to=5, lwd=7, xlab="chi", ylab="exp(x)", cex.lab=4,axes=F)
axis(1, labels=NA,at=c(0,5))
axis(2, labels=NA,at=c(0,150))
text(1,120,"Alpha",adj=c(0,0),cex=3)
text(3.5,10,"Beta",adj=c(0,0),cex=3)
## dev.off()

在此处输入图像描述

于 2013-01-12T00:58:32.380 回答
7

这是一种方法:

curve(exp(x), from=1, to=5, lwd=5)
curve(150-exp(x), from=1, to=5, lwd=5, col="darkblue",add=T)
par(new=TRUE)
par(oma=c(1,4,5,1))
par(mfcol=c(2,2), mfg=c(1,1))
par(mar=c(7,7,1,1))
curve(exp(x), from=1, to=5, lwd=7, xlab="chi", ylab="exp(x)", cex.lab=2,axes=F)
axis(1, labels=NA,at=c(0,5))
axis(2, labels=NA,at=c(0,150))
text(1,120,"Alpha",adj=c(0,0),cex=1.5)
text(4,10,"Beta",adj=c(0,0),cex=1.5)

给我这个:

在此处输入图像描述

使用各种选项(尤其是omamar)将结果格式化为您喜欢的格式。

于 2013-01-11T23:58:18.513 回答