使用 ggplot 库中的 geom_path 函数

7

我有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)

我希望按照以下方式绘制这些数据:
每个圆圈(等高线)代表该统计量“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())

在此输入图片描述

请问有没有人能够帮我实现我想要的结果?非常感谢您的任何帮助!


(注:该文本包含HTML标签,请勿删除)
1个回答

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


+1 @Mariam,对不起,在你之前的问题中给出了误导性的评论;我实际上没有尝试过它,而是假设它会起作用。 - BrodieG
@BrodieG 不用担心!尽管如此,你还是非常有帮助的! - Mayou
Sven,出于某种原因,我仍然得到与使用geom_path()相同的结果...我不知道为什么... - Mayou
@Mariam,在rbind命令之前,我只是使用了df的第一个版本。 - Sven Hohenstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接