碰巧我正在进行一些调查,这些调查的数据可以直接显示(就像Map一样),因为极坐标是由相对于中心的距离和Angular 定义的。但是,有些数据不应该用简单的点来表示,而应该用表面来表示。由一个共同变量所确定的四个或更多点的位置和Angular 定义的(就像在正常聚类中发生的那样)。在下面的例子中,我希望所有用变量“Qu”标识的点都被分组在同一个表面上。计算表面的问题可以很容易地单独解决,为了图形的目的,目前我只对表示感兴趣。
library(ggplot2)
Azimut<-c(30,60,90,270,275, 45, 135, 45, 180)
Distance<-c(3,6,12,16,22, 4, 16, 18, 18)
CHR<-c(12,19,55,7,39,34,32,34,32)
Spe1<-c("Eu","Pi","Qu","Qu","Ol", "Qu", "Qu", "Qu", "Qu")
Tr1<-data.frame(Azimut,Distance, CHR, Spe1)
Tr1$Theta<-2*pi*Azimut/360
# With polar coordinates
ggplot(aes(x = (Azimut), y = Distance), data = Tr1) +
geom_hline(aes(yintercept = 6)) +
geom_hline(aes(yintercept = 18)) +
scale_x_continuous(limits = c(0, 360),
breaks = seq(0, 360, 45)) +
scale_y_continuous(limits = (c(0, 18)),
breaks = (seq(0, 6, 18))) +
geom_point(aes(size=CHR, fill=factor(Spe1)),shape =21,alpha = 0.7)+
coord_polar(theta = "x")
这给出了以下结果:
2条答案
按热度按时间guicsvcw1#
这里有两种选择。一种是计算曲线,当转换为极坐标时,这些曲线会给予直线。第二种是将数据转换为极坐标,并绘制正态直线多边形。出于多种原因,我认为第二种选择更容易。甚至可以使用注解层来伪造极轴:
xqkwcwgp2#
你可以用
chull
找到形成一个包围船体的点的行索引,然后用geom_polygon
使用它们的坐标。对于笛卡尔坐标,这是可行的-但极坐标可能会给予意想不到的结果。x1c 0d1x(Debian标志的种类...)