【问题标题】:Rose diagram for migration data迁移数据的玫瑰图
【发布时间】:2018-07-25 12:25:39
【问题描述】:

我正在尝试创建一个玫瑰图,显示每个细胞子集的平均轨迹角度和距离。我希望玫瑰图周围的角度为轨迹角,图中条形的长度为总位移。

这是每组平均角度和位移的测试数据集。

testsum<-data.frame(Group=c(1,2,3),
                angle=c(0.78,1.04,2.094),
                displacement=c(1.5,2,1))

当我尝试以循环方式绘制时,我的图表看起来非常错误。

p1<-ggplot(testsum, aes(x=angle,y=displacement))+
  coord_polar(theta="x",start=0)+
  geom_bar(stat="identity",aes(color=Group,fill=Group),width=.01)+    
  scale_x_continuous(breaks=seq(0,360,60))

它给了我这个输出图。

根据数据显示,它应该看起来更像这样(绘制预期输出)。

似乎放置角度不正确?知道我做错了什么吗?

【问题讨论】:

  • 在预期的图表组 3 出现两次。有错吗?
  • 是的,这是错误的。我更新了我的图表。
  • 喜欢图表编辑!

标签: r ggplot2 rose-diagram


【解决方案1】:

也许你可以使用 open air 包中的 windRose 功能

library(openair)
    testsum<-data.frame(Group=c(1,2,3),angle=c(0.78,1.04,2.094),displacement=c(1.5,2,1))
    testsum$angle=180*testsum$angle/pi
windRose(testsum,ws="displacement",wd="angle",breaks=c(0.5,1,1.5,2),paddle=F,key.header = "My Rose",angle=10, 
     statistic="prop.mean",key.footer = "Displacement")

【讨论】:

    【解决方案2】:

    也许你可以试试这个:

    testsum$angle_b=180*testsum$angle/pi
    #
    ggplot(testsum, aes(x=angle_b,y=displacement))+
        geom_bar(stat="identity",aes(color=Group,fill=Group),width=1) +    
        scale_x_continuous(breaks=seq(0,360,10), limits=c(0,360)) + coord_polar(direction=1)
    

    【讨论】:

      【解决方案3】:

      虽然 MLavoie “比我快 20 分钟”,但我认为使用 NISTunits 包可以增加一些可读性:

      library(ggplot2)
      library(NISTunits)
      
      testsum <- data.frame(
        Group = c(1, 2, 3),
        angle = c(0.78, 1.04, 2.094),
        displacement = c(1.5, 2, 1)
      )
      
      testsum$angle = NISTradianTOdeg(testsum$angle)
      
      ggplot(testsum, aes(x = angle, y = displacement)) +
        coord_polar(theta = "x", start = NISTdegTOradian(-90), direction = 1) +
        geom_bar(stat = "identity",
                 aes(color = Group, fill = Group),
                 width = 1) +
        scale_x_continuous(breaks = seq(0, 360, 10), limits = c(0, 360))
      

      结果:

      剪切下半部分检查this answer.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-03
        • 1970-01-01
        • 1970-01-01
        • 2023-01-16
        • 2022-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多