我似乎无法找到关于此的更多信息。我想旋转主要情节和图像,同时保持图例和标题不变。
这是一个例子。您需要fields
包,它会为您提供image.plot
功能。
x=1:10
y=1:10
z=matrix(-50:49,10,10)
image.plot(x,y,z, main="Some Fancy Title",yaxt="n",xaxt="n", ylab="", xlab="")
所以我再次想要旋转主图像并保留标题和图例。顺便说一下,我正在旋转36度,所以我不能只旋转我正在喂食的矩阵image.plot
。 grid
包似乎引导我朝着正确的方向前进,但令人沮丧的是我无法直接用他们所谓的viewports
绘制情节或其他来自base
的内容。到目前为止,我必须说不是grid
包的粉丝。
我发现this post在回答5中提供了一些有用的信息。我从中知道我应该能够使用grid.cap()
捕获设备的栅格并使用grid.raster(cap, vp=viewport(angle=36))
来将绘图导入正确的视口。我在使用这种方法为我工作时遇到了问题,启动它似乎效率很低。我将绘制数千个图像,以创建我已建模的各种时间和空间变化数据的GIF。
我正在寻找的是让grid.cap()
使用上面的例子并且只将图像的主要部分旋转36度的方法,或者做同样的事情,以便与我合作地块数量。非常感谢任何想出这个想法的人。
答案 0 :(得分:1)
问题是image.plot
不是一个情节而是两个:主要的一个和传说。如果您想使用包fields
'image.plot
函数,则必须直接使用函数的代码。否则,您可以使用基础包image
中的函数graphics
并手动添加图例和标题。
这是一种方法:
library(grid)
x=1:10
y=1:10
z=matrix(-50:49,10,10)
layout(matrix(c(1,2),ncol=2), widths=c(2,1))
par(mar=c(5,3,5,3))
image(x,y,z,yaxt="n",xaxt="n", ylab="", xlab="",col=heat.colors(50))
cap <- grid.cap()
grid.newpage()
grid.raster(cap, x=unit(0.6,'npc'), #You can modify that if the plot
y=unit(0.5,'npc'), #ends up outside the figure area
vp=viewport(angle=36))
mtext("Some fancy title",side=3,cex=1.5,line=2) #Plot your title
par(mar=c(5,8,5,3))
plot(NA,ax=F,ann=F,type="n",xlim=c(0,1),ylim=c(0,50),yaxs="i")
for(i in 1:50)rect(0,i-1,1,i,col=heat.colors(50)[i],border=NA)
box()
axis(4,las=2,at=seq(0,50,by=10),labels=seq(-50,50,by=20))