使用ggplot库中的geom_path

时间:2014-02-03 15:29:39

标签: r plot ggplot2

我有12个变量, M1,M2,...,M12 ,为此我计算了某个统计量 x

 df = data.frame(model = factor(paste("M", 1:28, sep = ""), levels=paste("M", 1:28, sep = "")), x = runif(28, 1, 1.05))

 levels = seq(0.8, 1.2, 0.05)

我想将这些数据绘制如下:

enter image description here

每个圆圈(轮廓)代表该统计数据的级别 “x” 。三条蓝线仅代表三种不同的场景。

此示例中包含的数据框表示一个方案。对于该特定情况,蓝线只会将 M1 的所有模型的值加入 M28

我尝试了以下内容:

 ggplot(data=df, aes(x=model, y=x, group=1)) + 
   geom_line() + coord_polar() + 
   scale_y_continuous(limits=range(levels), breaks=levels, labels=levels) +
   theme(axis.text.y = element_blank(), axis.ticks = element_blank(), axis.title.x = element_blank(), axis.title.y = element_blank())

然而,我得到一条断开的路径(在M28和M1之间)

enter image description here

然后,我复制了第一行并将其放在数据框的底部(见下文),然后使用geom_path()代替geom_line(),但我没有得到结果我是寻找:

 ## Replicating the first row (model1) and placing it at end of dataframe
 df = rbind(df, df[1,])

 ## using geom_path()

 ggplot(data=df, aes(x=model, y=lg, group=1)) + 
   geom_path() + coord_polar() + 
   scale_y_continuous(limits=range(levels), breaks=levels, labels=levels) +
   theme(axis.text.y = element_blank(), axis.ticks = element_blank(), axis.title.x =  element_blank(), axis.title.y = element_blank())

enter image description here

请问我能帮助我达到我想要的结果吗?任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:7)

您必须使用geom_polygon作为已关闭的路径:

library(ggplot2)
ggplot(data=df, aes(x=model, y=x, group=1)) + 
  geom_polygon(fill = NA, colour = "black") + 
  coord_polar() + 
  scale_y_continuous(limits=range(levels), breaks=levels, labels=levels) +
  theme(axis.text.y = element_blank(), axis.ticks = element_blank(), 
        axis.title.x = element_blank(), axis.title.y = element_blank())

enter image description here