如何剪辑coord_polar图

时间:2013-07-29 10:43:44

标签: r ggplot2

我正在尝试绘制一些高程数据(通常在-90到90度之间),并且我已经成功使用coord_polar。看看这段代码:

library(ggplot2)
#
r = c(2:8)*20
e = c(-4:9)*10
a = c(0:71)*5

points = expand.grid(r,e,a)
colnames(points) = c("distance", "elevation", "azimuth")
points$elevation[points$elevation <0] = points$elevation + 360

forEle = subset(points, azimuth == 0)


#ele_range = 
ggplot(forEle, aes( x=elevation, y=distance))+
geom_point()+
coord_polar(theta = "x", start = -1.5708, direction = -1)+
scale_y_continuous(breaks = c(0:16)*10, limits=c(0, 160)) +
scale_x_continuous(breaks=seq(0, 359, by=30), labels=c(expression(0^degree), expression(30^degree), expression(60^degree), expression(90^degree), expression(60^degree), expression(30^degree), expression(0^degree), expression(-30^degree), expression(-60^degree), expression(-90^degree), expression(-60^degree), expression(-30^degree)), limits=c(0, 360)) +
labs(title = "",
        x = "x",
        y = "y")+
theme(legend.position="bottom")

我的第一个难点是尝试将负角度映射到绘图(我通过向所有负值添加360度来实现它),但我想知道是否有更好的方法来做到这一点。其次,更重要的是,我想将输出从-90度剪切(或限制)到90度,即图的右侧,但我无法做到。对此问题的任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我参加派对有点晚了,但你的意思是这样的吗?

enter image description here

也可以围绕整个圆圈以-90到90完成。

enter image description here

第一个:

scale_x_continuous(limits=c(-180,180),breaks=seq(-90, 90, 45))

第二个:

scale_x_continuous(limits=c(-90,90),breaks=seq(-90, 90, 45))