r-ggplot2:极线图,有2行

时间:2016-09-08 17:33:45

标签: r plot ggplot2 polygon

使用ggplot2,我试图在极线图中绘制两种治疗方法。我能够绘制两种治疗的点,并为我输入的第一次治疗获得一条线,但是我要连接第二组的线只是覆盖在第二组上。

  category highest lowest
  1        A      71     23
  2        B      81     38
  3        C      77     22
  4        D      83     56
  5        E      84     32
  6        F      82     55
  7        G      73     26

到目前为止,我的代码看起来像这样

p1<-ggplot(data=d,aes(x=factor(category),y=highest,group=1)) + 
ylim(0,NA) +
geom_point(color='purple',stat='identity')+
geom_polygon(color='purple',fill=NA)+
coord_polar(start =-pi* 1/7)

p1

p1 + 
geom_point(aes(x=factor(category),y=lowest),color='green',stat='identity')+
geom_polygon(color='green',fill=NA)+
coord_polar(start =-pi* 1/7)

它看起来像这样

plot

有任何帮助吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您仍然在第二次geom_polygon来电中使用整体美学(“最高”)。要绘制不同的列,您需要在图层中的aes中定义它。

geom_polygon(aes(y = lowest), color='green',fill=NA)

这种情节的更标准方法是将数据集转换为长格式,其中您将变量(最高和最低)分组为变量,并且所有y值都在单个列中进行绘图。

library(reshape2)
d2 = melt(d, id.var = "category")

完成后,您可以将color映射到分组变量。您可以使用scale_color_manual将颜色设置为特定值。你默认得到一个传奇(这可能是一件好事),但是你使用guide = "none"来压制它。

ggplot(data=d2, aes(x=factor(category), y=value, group = variable, color = variable)) + 
    ylim(0,NA) +
    geom_point(, stat='identity') +
    geom_polygon(fill=NA)+
    coord_polar(start =-pi* 1/7) +
    scale_color_manual(values = c("purple", "green"), guide = "none")

两种方法最终都给出了相同的情节: enter image description here