【问题标题】:r- ggplot2: polar line plot with 2 linesr- ggplot2:2 条线的极线图
【发布时间】:2016-09-08 17:33:44
【问题描述】:

使用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

有什么帮助吗?谢谢!!

【问题讨论】:

标签: r plot ggplot2 polygon


【解决方案1】:

在第二次geom_polygon 调用中,您仍在使用整体 y 美学(​​“最高”)。要绘制不同的列,您需要在层内的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")

这两种方法最终给出了相同的情节:

【讨论】:

    猜你喜欢
    • 2021-01-06
    • 2014-11-17
    • 2012-06-07
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多