我有情节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 /无格)
答案 0 :(得分:15)
好的,这是一个例子,我把它绘制成10 x 10英寸的pdf。 (使用par(fig = )
等人的一部分令人沮丧的是,它们的效果在很大程度上取决于绘图设备的大小。)
编辑添加一些解释:
基本图形绘制参数par("fig")
描述/设置图形区域的位置作为“绘图区域”的比例(对于单个图形图,通常是整个设备)。它需要c(xmin, xmax, ymin, ymax)
格式的长度为4的向量,其中包含0
和1
之间的数字(比例)。
在这里,我使用grconvertX()
和grconvertY()
将xy位置表示为较大的情节(也称为"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()
答案 1 :(得分: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)
给我这个:
使用各种选项(尤其是oma
和mar
)进行游戏,以便将结果格式化为您的选择。