Plotrix R包polar.plot符号覆盖

时间:2013-03-11 19:43:08

标签: r plot polar-coordinates azimuth plotrix

我正在使用极坐标图来描述时间序列中的卫星位置。以下问题使用R package plotrix中的polar.plot函数。示例图:

library(plotrix)
polar.plot(c(0,1,3,4),c(30,60,90,120),start=90,clockwise=TRUE,rp.type="s",
                          point.symbols=19,radial.lim=c(0,5),boxed.radial=F)

我遇到的问题是这个函数在数据值上绘制标签和轴(参见径向位置0和3),我没有看到控制这种行为的方法。我可以通过再次添加数据值(添加到上一个图表)来关闭轴和标签来运行解决方法,但这不是优雅的:

polar.plot(c(0,1,3,4),c(30,60,90,120),start=90,clockwise=TRUE,rp.type="s",
           grid.left=F,point.symbols=19,show.radial.grid=FALSE,
           show.grid.labels=FALSE,show.grid=FALSE,labels=NULL,add=TRUE)

我的问题有两个:

  1. 有没有办法在plotrix中控制这个我在文档中遗漏的内容?
  2. 是否有另一个可以轻松处理这种方位角的包 极地情节?

2 个答案:

答案 0 :(得分:3)

您可以使用两个参数控制这些放射状标签的显示方式:show.grid.labelsradial.labels。有关更完整的信息,请参阅?radial.plot

show.grid.labels接受1到4之间的值(类似于posaxis的值,请参阅?par?axis)控制他们所在的一方显示。 radial.labels接受标签矢量,因此如果您希望拒绝标签:radial.labels = ""有效,

library(plotrix)
polar.plot(c(0,1,3,4),c(30,60,90,120),start=90,clockwise=TRUE,rp.type="s",
           point.symbols=19,radial.lim=c(0,5),boxed.radial=FALSE, 
           show.grid.labels=2)

enter image description here

polar.plot(c(0,1,3,4),c(30,60,90,120),start=90,clockwise=TRUE,rp.type="s",
           point.symbols=19,radial.lim=c(0,5),boxed.radial=FALSE, 
           show.grid.labels=2, radial.labels=c("",1:5))

enter image description here

您还可以使用show.radial.grid

删除轴线
polar.plot(c(0,1,3,4),c(30,60,90,120),start=90,clockwise=TRUE,rp.type="s",
           point.symbols=19,radial.lim=c(0,5),boxed.radial=FALSE, 
           show.grid.labels=2, radial.labels=c("",1:5), 
           show.radial.grid=FALSE)

enter image description here

然而,似乎没有办法让线条位于标签和点后面,所以如果你确实希望线条出现在后面,那么你最初的想法可能是最好的:

polar.plot(NA,NA,start=90,clockwise=TRUE,rp.type="",
           radial.lim=c(0,5),boxed.radial=FALSE, show.grid.labels=2,
           radial.labels=c("",1:5)) # First plotting the grid
polar.plot(c(0,1,3,4),c(30,60,90,120),start=90,clockwise=TRUE,rp.type="s",
           point.symbols=19,radial.lim=c(0,5),show.grid=FALSE, 
           show.radial.grid=FALSE, add=TRUE)  # Then the points without the grid

enter image description here

我不知道有任何其他包具有处理此类情节的功能,但是如果你想创建自己的功能,this answer to your previous question肯定可以帮助你开始。

答案 1 :(得分:0)

这似乎已得到修复。我没有查看更改日志以确定更改发生的位置,但至少从plotrix 3.5-12开始修复。

library(plotrix)
polar.plot(c(0,1,3,4),c(30,60,90,120),start=90,clockwise=TRUE,rp.type="s",point.symbols=19,radial.lim=c(0,5),boxed.radial=F,grid.col="red",point.col="green")

polar.plot

目前,在数据点下正确绘制了轴。标签(合理地)绘制在顶部。如果需要将数据覆盖标签,上面讨论的overplot选项将很有效。