使用ggplot库中的geom_path

May*_*you 7 plot r 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)
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

每个圆(轮廓)代表该统计量"x"的水平.三条蓝线仅代表三种不同的场景.

此示例中包含的数据框表示一个方案.对于该特定场景,蓝线将简单地加入所有模型M1M28的值.

我尝试了以下方法:

 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())
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

然后,我复制了第一行并将其放在数据框的底部(见下文),然后使用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())
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请问有什么能帮我实现我想要的结果吗?任何帮助,将不胜感激.谢谢!

Sve*_*ein 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())
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述