【问题标题】:3D polar plot in RR中的3D极坐标图
【发布时间】:2015-06-29 06:33:26
【问题描述】:

我使用ggplot2为我的数据绘制了极坐标。

我的数据集是这种格式:

 Time    Lat    Long   Act
 18:00  21.05   70.00  feed
 18:45  21.00   75.00  walk
 19:00  21.09   77.00  walk
 19:05  24.98   77.09  rest

代码:

library(ggplot2)
plot.new()

ggplot(aes(x = Lat, y = Long, colour = Act), data = file) + 
geom_point() 
ggplot(aes(x= Lat, y = Long , colour = Act), data = file) + 
geom_point() + 
coord_polar(theta = "y")

这是我得到的极坐标图: here

这个地块有纬度和经度。现在我想再增加一个维度“时间”。我怎样才能做到这一点 ?。如何在 3D 极坐标图中制作这个 2D 极坐标图?

【问题讨论】:

标签: r ggplot2 polar-coordinates


【解决方案1】:

您可以尝试使用变量“时间”的值来缩放点的大小。不幸的是,您的示例无法重现,但类似的方法可能会起作用:

ggplot(aes(x= Latitude, y = Longitude , colour = ACTIVITY, size=time), data = Data) + geom_point(shape=21) + coord_polar(theta = "y") + scale_size_area(max_size=10)

您可以在下面看到一个可重现的示例,该示例基于 Winston Chang 的“The R Graphics Cookbook”(O'Reilly 2013)中使用的数据。

在这种情况下,点的大小代表温度,颜色代表风速类别,风向以极坐标绘制,半径为风的平均值。

library(gcookbook)
library(ggplot2)
p <- ggplot(wind, aes(x=WindDir, y=WindAvg, size=Temp, fill=SpeedCat)) +
     coord_polar() + geom_point(shape=21)+scale_size_area(max_size=10) +
     scale_x_continuous(limits=c(0,360),breaks=seq(0,360,by=45))

这是输出:

希望这会有所帮助。

【讨论】:

  • 抱歉,我对您的回答很感兴趣,但无法让它发挥作用。您将通过展示您的答案并包含输出图来帮助 OP 和其他人。具体来说,您对“时间”的假设似乎对于它正确确定大小很重要(当这是 as.Date 类时,我得到了“错误:提供给连续比例的离散值”)。
  • @Marcinthebox 如果我的语气不友好,我深表歉意。我现在更好地理解了你的评论。我将尝试查看是否可以使用其中一个常见数据集提供类似的图。据推测,提供有用答案的最简单方法是 OP 是否可以发布 dput (Data) 的输出。
  • @lukeA 我刚刚更新了我的问题。你能复习一下吗?
  • @RHertel 我刚刚更新了我的问题。你能复习一下吗
  • 谢谢你,@janvigiri。我不确定我可以在这里提供帮助。在您修改后的帖子中,您提出了一个时间序列,而我认为在您的示例中,“时间”是指每个事件的持续时间。要以有意义的方式绘制数据,可能需要引入第三维并将点绘制为 (r、phi 和 t) 的函数。目前我没有时间看看是否可以像这样修改情节。也许以后。另一种方法是绘制几个彼此相邻的极坐标图,每个极坐标图都包含属于预定义时间段的不同“bin”的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多