我有剧情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/无晶格)

最佳答案

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

编辑后添加一些说明:

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

在这里,我使用grconvertX()grconvertY()将以较大图块本身的坐标系(又称"user")表示的x-y位置转换为"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()

关于r - 在情节内进行情节,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14288194/

10-10 05:38