是否可以在R(基础图形)中旋转绘图?

voase2hg  于 2022-12-06  发布在  其他
关注(0)|答案(7)|浏览(145)

我搜索了这个,发现有了{grid}就有了旋转图像的方法,对于一些图,你可以玩它们的旋转(例如plot(x,y)而不是plot(y,x))。
然而,我想知道是否有一个通用的方法来旋转R中的绘图(一个将工作的任何绘图生成的基础图形)?

jv4diomz

jv4diomz1#

您可以导出图形,读取它,并将其旋转显示为rasterGrob,例如(或者在旋转矩阵后显示为rasterImage,或者如果需要矢量路径,则显示为grImport grob)

plot(1:10, rnorm(10))
library(grid)
cap <- grid.cap()
grid.newpage()
grid.raster(cap, vp=viewport(angle=30))

新的gridGraphics包现在可能是一个更好的选择。
注意:这似乎不适用于Rstudio的图形设备,可能他们还没有实现grid.cap

vfwfrxfs

vfwfrxfs2#

通过gridGraphics包可以做到这一点,尽管感觉有点粗糙(?grid.echo中的示例并不都适合我),

plot(1:10, rnorm(10))

library(gridGraphics)

grab_grob <- function(){
  grid.echo()
  grid.grab()
}

g <- grab_grob()
grid.newpage()
pushViewport(viewport(width=0.7,angle=30))
grid.draw(g)

kxe2p93d

kxe2p93d3#

我有理由相信,基本图形本身并没有一种通用的方法来实现这一点。然而,有一个gridBase包允许在一个“绘图”中混合基本图形和网格图形。该包的简介中有一个关于在网格viewports中嵌入基本图形的部分。所以你可以看看那里,看看你是否可以在你的地块周围做一个网格 Package 器,并使用网格来做旋转。不确定这是否是一个可行的路线,但据我所知,这是回答您问题唯一可能途径。
gridBase位于CRAN上,作者是网格包的作者Paul Murrell。
在浏览了小插图之后,我注意到第页上的问题和限制部分中的一个项目符号,它声明可能将基础图形嵌入 * 旋转 * grid视口。所以我猜你运气不好。

xzv2uavs

xzv2uavs4#

旋转3D散点图
您也可以使用rgl套件中的plot3D(x,y,z)函数来建立互动式3D散布图。它会建立可使用鼠标器旋转的旋转式3D散布图。前三个参数是代表点的x、y和z数值向量。col=和size=分别控制点的颜色和大小。

# Spinning 3d Scatterplot
library(rgl)

plot3d(wt, disp, mpg, col="red", size=3)
edqdpe6u

edqdpe6u5#

函数rotate_plot的用法如下:

rotate_plot(some_base_plot(x, y, ...))

是不可能的,因为大多数基本绘图不返回值。
一些绘图包含horiz参数,允许您选择绘图的方向。请查看barplot.default以了解如何实现此功能。(警告:它是混乱的。)
@ucfagls的建议使用gridBase是你最好的选择,在Murrell的R Graphics的Appendix B中有一些使用它的例子。

xvw2m8pv

xvw2m8pv6#

考虑到可以使用基本图形来编写自己的绘图函数,我不明白为什么会存在一个单一的解决方案。你想要的真的只是一种用y数据替换x数据的方法吗?你所说的“旋转”到底是什么意思?

xriantvc

xriantvc7#

是的,可以使用r中的函数Coord flip()旋转R中的图
您可以将图表从水平翻转为垂直以及从垂直翻转为水平。

相关问题