如何在R中绘制极坐标图?

7
假设(x(t),y(t))具有极坐标(√t,2πt),请绘制t∈[0,10]时的(x(t),y(t))图形。
在R中没有适当的函数可以用来绘制极坐标。我尝试使用普通的plot函数,给定x=√t和y=2πt。 但是结果的图形与预期不符。
我从《Introduction to Scientific Programming and Simulation using r》这本书中得到了这个问题,该书说明绘制的图应该是螺旋形的。

请参见:http://docs.ggplot2.org/current/coord_polar.html - Colonel Beauvel
“参数方程”标签是我能找到的最接近这个数学概念的标签。 - IRTFM
3个回答

10

生成一个序列:

t <- seq(0,10, len=100)  # the parametric index
# Then convert ( sqrt(t), 2*pi*t ) to rectilinear coordinates
x = sqrt(t)* cos(2*pi*t) 
y = sqrt(t)* sin(2*pi*t)
png("plot1.png");plot(x,y);dev.off()

enter image description here

这不会显示连续的字符,因此需要添加线条来连接序列中相邻的点:

png("plot2.png");plot(x,y, type="b");dev.off()

enter image description here


第一项通常在极坐标中标记为“r”,即半径,第二项通常标记为“theta”,即从指向右侧的水平向量开始的弧度角。请注意,螺旋线的连续环之间的距离正在减小。这是由于将sqrt函数应用于径向尺寸所导致的。如果您只绘制(t,2 * pi * t),则空间将保持不变(更像蜘蛛网)。关于R没有极坐标图的说法,这本书实际上是不正确的。包'plotrix'具有polar.plot,而包'ggplot2'具有coord_polar - IRTFM

3

就像前面的评论中提到的那样,R可以使用极坐标绘图。 plotrix软件包有一个名为polar.plot的函数可实现此功能。 极坐标由长度和角度定义。 该函数可以使用一系列长度和一系列角度来绘制极坐标图。例如,要制作一个螺旋:

library(plotrix)
plt.lns <- seq(1, 100, length=500)
angles <- seq(0, 5*360, length=500)%%360
polar.plot(plt.lns, polar.pos=angles, labels="", rp.type = "polygon")

1

一个值得尝试的选项是Plotly包。

library(plotly)

p <- plot_ly(plotly::mic, r = ~r, t = ~t, color = ~nms, alpha = 0.5, type = "scatter")

layout(p, title = "Mic Patterns", orientation = -90)

注意:如果您使用的是RStudio,图形将显示在“Viewer”选项卡中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接