我搜索了这个,发现有了{grid}就有了旋转图像的方法,对于一些图,你可以玩它们的旋转(例如plot(x,y)而不是plot(y,x))。然而,我想知道是否有一个通用的方法来旋转R中的绘图(一个将工作的任何绘图生成的基础图形)?
jv4diomz1#
您可以导出图形,读取它,并将其旋转显示为rasterGrob,例如(或者在旋转矩阵后显示为rasterImage,或者如果需要矢量路径,则显示为grImport grob)
rasterGrob
rasterImage
grImport
plot(1:10, rnorm(10)) library(grid) cap <- grid.cap() grid.newpage() grid.raster(cap, vp=viewport(angle=30))
新的gridGraphics包现在可能是一个更好的选择。注意:这似乎不适用于Rstudio的图形设备,可能他们还没有实现grid.cap。
gridGraphics
grid.cap
vfwfrxfs2#
通过gridGraphics包可以做到这一点,尽管感觉有点粗糙(?grid.echo中的示例并不都适合我),
?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)
kxe2p93d3#
我有理由相信,基本图形本身并没有一种通用的方法来实现这一点。然而,有一个gridBase包允许在一个“绘图”中混合基本图形和网格图形。该包的简介中有一个关于在网格viewports中嵌入基本图形的部分。所以你可以看看那里,看看你是否可以在你的地块周围做一个网格 Package 器,并使用网格来做旋转。不确定这是否是一个可行的路线,但据我所知,这是回答您问题唯一可能途径。gridBase位于CRAN上,作者是网格包的作者Paul Murrell。在浏览了小插图之后,我注意到第页上的问题和限制部分中的一个项目符号,它声明不可能将基础图形嵌入 * 旋转 * grid视口。所以我猜你运气不好。
gridBase
viewports
grid
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)
edqdpe6u5#
函数rotate_plot的用法如下:
rotate_plot
rotate_plot(some_base_plot(x, y, ...))
是不可能的,因为大多数基本绘图不返回值。一些绘图包含horiz参数,允许您选择绘图的方向。请查看barplot.default以了解如何实现此功能。(警告:它是混乱的。)@ucfagls的建议使用gridBase是你最好的选择,在Murrell的R Graphics的Appendix B中有一些使用它的例子。
horiz
barplot.default
xvw2m8pv6#
考虑到可以使用基本图形来编写自己的绘图函数,我不明白为什么会存在一个单一的解决方案。你想要的真的只是一种用y数据替换x数据的方法吗?你所说的“旋转”到底是什么意思?
xriantvc7#
是的,可以使用r中的函数Coord flip()旋转R中的图您可以将图表从水平翻转为垂直以及从垂直翻转为水平。
7条答案
按热度按时间jv4diomz1#
您可以导出图形,读取它,并将其旋转显示为
rasterGrob
,例如(或者在旋转矩阵后显示为rasterImage
,或者如果需要矢量路径,则显示为grImport
grob)新的
gridGraphics
包现在可能是一个更好的选择。注意:这似乎不适用于Rstudio的图形设备,可能他们还没有实现
grid.cap
。vfwfrxfs2#
通过gridGraphics包可以做到这一点,尽管感觉有点粗糙(
?grid.echo
中的示例并不都适合我),kxe2p93d3#
我有理由相信,基本图形本身并没有一种通用的方法来实现这一点。然而,有一个
gridBase
包允许在一个“绘图”中混合基本图形和网格图形。该包的简介中有一个关于在网格viewports
中嵌入基本图形的部分。所以你可以看看那里,看看你是否可以在你的地块周围做一个网格 Package 器,并使用网格来做旋转。不确定这是否是一个可行的路线,但据我所知,这是回答您问题唯一可能途径。gridBase
位于CRAN上,作者是网格包的作者Paul Murrell。在浏览了小插图之后,我注意到第页上的问题和限制部分中的一个项目符号,它声明不可能将基础图形嵌入 * 旋转 *
grid
视口。所以我猜你运气不好。xzv2uavs4#
旋转3D散点图
您也可以使用rgl套件中的plot3D(x,y,z)函数来建立互动式3D散布图。它会建立可使用鼠标器旋转的旋转式3D散布图。前三个参数是代表点的x、y和z数值向量。col=和size=分别控制点的颜色和大小。
edqdpe6u5#
函数
rotate_plot
的用法如下:是不可能的,因为大多数基本绘图不返回值。
一些绘图包含
horiz
参数,允许您选择绘图的方向。请查看barplot.default
以了解如何实现此功能。(警告:它是混乱的。)@ucfagls的建议使用
gridBase
是你最好的选择,在Murrell的R Graphics的Appendix B中有一些使用它的例子。xvw2m8pv6#
考虑到可以使用基本图形来编写自己的绘图函数,我不明白为什么会存在一个单一的解决方案。你想要的真的只是一种用y数据替换x数据的方法吗?你所说的“旋转”到底是什么意思?
xriantvc7#
是的,可以使用r中的函数Coord flip()旋转R中的图
您可以将图表从水平翻转为垂直以及从垂直翻转为水平。