首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >玫瑰图(R)

玫瑰图(R)
EN

Stack Overflow用户
提问于 2012-11-17 09:01:14
回答 1查看 9.7K关注 0票数 4

我想画一个圆形数据的玫瑰图。我一直在使用circular包,在这个包中,它允许您使用函数rose.diag绘制一个简单的玫瑰图。虽然这绘制了图表,但我希望能够改进绘图,但无法找到添加或稍微调整它的方法。我已经看过在ggplot2中绘制它,但这在我看来并不清楚,我很难在R中找到另一个包,它像这样绘制玫瑰图。

我在下面发布了一个数据示例和我的当前代码以及我的查询:

代码语言:javascript
复制
Angle
0.65454759
0.01355458
0.5052027
0.2264302
-0.350552
-0.428481
0.1231778
0.258787
0.06723504
0.06906181
2.54608572
-1.6591672
3.00437314
-0.0503291
-0.828578
-1.9616418
-0.6468774
0.01438686
0.1162713
0.9938797
0.1861583
0.1547071
0.2577813
0.5110576
0.08714113

这些数据是弧度转角。使用circular包,我使这些数据成为类circular的向量:

代码语言:javascript
复制
x <- circular(Angle)

然后使用以下代码绘制一个玫瑰图,它以度而不是弧度绘制图表:

代码语言:javascript
复制
rose.diag(x, pch = 16, cex = 1, axes = TRUE, shrink = 1, col=3, prop = 2, 
    bins=36, upper=TRUE, ticks=TRUE, units="degrees")

有三件事我想补充到这个情节:

  1. 更改绘图方向,使0位于顶部而不是右侧。
  2. 在情节中加入同心圆,帮助直观地解释每个“垃圾箱”的大小和重量。
  3. 添加一条线来识别平均角度(如果可能的话使用sd错误条)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-17 12:02:55

有几种方法可以做到这一点。在这个包中,rose.diag有一个“零”参数。

代码语言:javascript
复制
y <- scan() # paste in the values from the question and hit return twice
y <- circlar(y) # not necessary but prevents a warning
rose.diag(y, units = 'degrees', zero = pi/2) # units doesn't change the underlying units

或者,您可以设置您创建的circular对象的属性。

代码语言:javascript
复制
y <- circlar(y, zero = pi/2)
rose.diag(y, units = 'degrees') # note, no 0 call here

所以现在情节被旋转了..。如何添加东西..。

代码语言:javascript
复制
> par('usr')
[1] -1.376553  1.376553 -1.123200  1.123200

这给出了用户坐标,并告诉我用户空间中的图维。现在我可以做一些事情,比如加一个圆圈。

代码语言:javascript
复制
symbols(0, 0, circle = 0.2, inches = FALSE, add = TRUE, fg = 'red')

有一个lines.circular函数,但我并不清楚如何使用它。我还可以使用segmentsarrows命令绘制一条线,并直接用它们绘制绘图图。它需要一点欧几里德几何学才能将直线的角度和长度转换为点。这些都会让你开始的。

代码语言:javascript
复制
m <- mean.circle(y)
segments(0, 0, cos(m+pi/2), sin(m+pi/2), col = 'red') # note I need to add the new 0 position... there is a lines.circular function but it wasn't obvious to me how to use it.

(小费.rose.diag中的框架圆半径为1,因此,给出symbols中的circle参数,就会在这一点上精确地画出)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13429148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档