首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用圆形包创建半个极地图(玫瑰图)

用圆形包创建半个极地图(玫瑰图)
EN

Stack Overflow用户
提问于 2015-10-16 10:56:04
回答 1查看 1.8K关注 0票数 4

我正在用rose.diag函数从circular库绘制一个角度分布。输入数据是辐射体。我的MWE代码是

代码语言:javascript
复制
    library(circular);
    dat<-read.csv(file.choose(),header=F);
    data=unlist(dat);
    rose.diag(data, bins=24)

我得到了这张图:

我只想显示数据的一部分,从-pi/2到pi/2,最大滴答的长度等于圆周半径的长度,如下所示:

任何帮助都将不胜感激!

编辑

正如#律师所建议的,下面是带有数据样本的代码:

代码语言:javascript
复制
    library(circular);
    data<- c(-0.188,-0.742,-0.953,-0.948,-0.953,-1.187,-0.9327200,-0.855,-  0.024,1.303,-1.041,-1.068,-1.066,1.442,1.150,0.965,0.665,0.649,0.984,-1.379,-0.584,-0.573,-0.357,-0.237,-0.287,-0.486,-0.783,-0.298,0.849,1.088,-1.003,-0.952,-0.776,-0.811,-0.880);
    rose.diag(data, bins=24);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-16 18:04:36

也许您可以首先使用默认的绘图函数绘制半圆,而不需要分发。然后在没有圆圈的情况下填写分布:

代码语言:javascript
复制
library(circular)

data<- c(-0.188,-0.742,-0.953,-0.948,-0.953,-1.187,-0.9327200,-0.855,-  0.024,1.303,-1.041,-1.068,-1.066,1.442,1.150,0.965,0.665,0.649,0.984,-1.379,-0.584,-0.573,-0.357,-0.237,-0.287,-0.486,-0.783,-0.298,0.849,1.088,-1.003,-0.952,-0.776,-0.811,-0.880)

freq <- diff(colSums(outer( data %% (2*pi), (1:24)*pi/12,"<"))) / length(data)
r.max <- sqrt(max(freq))

#-----------------------------------------------------------------
# Plot the half circle:

lab.width  <- 0.15*r.max
lab.height <- 0.15*r.max

plot( c(-r.max,r.max), c(0,0),
      axes=FALSE,
      ylim=c(0,r.max+lab.height),
      xlim=c(-r.max-lab.width,r.max+lab.width),
      xlab="", ylab="", type="l")

for ( i in 0:(5*12-1) )
{
  psi <- i*pi/(5*12)
  x1 <- r.max*cos(psi)
  y1 <- r.max*sin(psi)
  x2 <- r.max*cos(psi+pi/(5*12))
  y2 <- r.max*sin(psi+pi/(5*12))

  lines( c(x1,x2), c(y1,y2), type="l")

  if (i %% 5 == 0) { lines( x1*c(1,0.95), y1*c(1,0.95), type="l" ) }
}

par(cex=2.0)

text( x = c(-r.max,0,r.max),
      y = c(0,r.max,0),
      labels = c("-pi/2","0","pi/2"),
      pos = c(2,3,4))

#------------------------------------------------------------
# Plot the distribution, but without the circle:

rose.diag(data,
          bins = 24,
          rotation = "clock",
          tcl.text = NA,
          ticks = FALSE,
          zero = pi/2,
          control.circle = circle.control( col="white" ),
          add = TRUE )

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

https://stackoverflow.com/questions/33168771

复制
相关文章

相似问题

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