【问题标题】:Windrose with polygon based on the "climatol" package in RWindrose 与基于 R 中的“climatol”包的多边形
【发布时间】:2014-02-21 16:50:40
【问题描述】:

我正在尝试使用一个名为“climatol”的过时 R 包,我需要为我的目的稍微修改一下函数“rosavent”。

我有一个平均风强度矩阵:

intensity <- matrix(c(0.20289, 0.14956, 0.24291, 0.35733, 0.59993, 0.89495, 0.71406, 0.38831), nrow=1, ncol=8)

和平均风向矩阵:

direction <- matrix(c(42.21043, 88.41437, 137.7938, 182.6797, 227.6208, 269.7415, 313.8207, 358.0944), nrow=1, ncol=8)

我需要多边形高度适合平均风向,而不是对应于函数“rosavent”的“ang”参数。

Here 是包“climatol”。如果需要,我也可以将函数(有点长)放在我的帖子中。

任何帮助将不胜感激!

谢谢

编辑

这是 climatol vs ggplot 结果,感谢 cmets 的帮助。目前 Climatol 仍然更接近我想要的结果,但我正在努力改进 ggplot。

气候:

GG图:

我仍在尝试改进 ggplot 代码以获取多边形的边,而不是由风强度/方向给出的高度之间的圆形联系。

一如既往地感谢您的大力帮助和想法!

【问题讨论】:

  • some advice 用于在 stackoverflow 问题中创建可重现的 R 示例。你更有可能得到答案。此外,如果您不喜欢 climatol,还有一个示例 here 用于在 ggplot2 中创建一个您可以适应的风玫瑰。
  • 感谢您的提示。我要修改我的帖子。我已经知道这篇文章和相关的 windrose 函数(我经常使用它!),但这次我真的需要 climatol 函数。
  • 我修改了帖子,如果我提出问题的方式仍然不好,请随时告诉我。再次感谢您的回答。
  • 由于函数rosavent没有被编译,你可以直接从包中拉出源代码并修改哪些参数很容易被绘制。
  • 感谢您的回答。这就是我所做的,但我在尝试修改代码时遇到了一些问题。我想我必须修改 fx 和 fy,但我暂时没有做到,这就是为什么我想知道是否有人会有解决方案......

标签: r


【解决方案1】:

我已经足够接近我认为可以回答我最初的问题了。为此,我对 ggplot2 失去了信心,因为我找不到使用 coord_polar 绘制多边形的方法。我发现了另一个适合我需要的软件包,称为“plotrix”。无论如何,这是我使用的数据集示例:

# Wind-Currents data
intensity_measured <- matrix(c(0.20289, 0.14956, 0.24291, 0.35733, 0.59993, 0.89495, 0.71406, 0.38831), nrow=1, ncol=8)
intensity_simulated <- matrix(c(0.17853, 0.07568, 0.52146, 1.94222, 0.08634, 0.02636, 0.04742, 0.04162), nrow=1, ncol=8)
direction_measured <- matrix(c(42.21043, 88.41437, 137.7938, 182.6797, 227.6208, 269.7415, 313.8207, 358.0944), nrow=1, ncol=8)
direction_simulated <- matrix(c(36.13772, 85.17624, 148.96940, 176.66004, 210.36353, 282.38215, 314.35050, 0.72026), nrow=1, ncol=8)

# Library allowing polygon plot on polar coordinates
library(plotrix)

# Function for plotting wind data by date
polar.plot(rbind(intensity_measured, intensity_simulated),
           rbind(direction_measured, direction_simulated),main="My plot",
           rp.type="p", poly.col=c(rgb(255/255, 215/255, 0, .8),
           rgb(0, 0, 1, .8)), start=90, clockwise=TRUE, radial.labels = "",
           label.pos=NULL, line.col=c("black", "black"),
           radial.lim=c(0,max(rbind(intensity_measured, intensity_simulated))),
           boxed.radial=FALSE)

我们来了:

这很清楚,所以,现在我可以比较我的测量风和模拟风了!如果有人有一个绝妙的主意,我仍然对使用 ggplot2 的解决方案感兴趣;)

感谢 Stackoverflow 社区,希望这个例子可以帮助到你们!

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    相关资源
    最近更新 更多