程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ggplot2:在分面箱线图中绘制连接每组观察值的线大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决ggplot2:在分面箱线图中绘制连接每组观察值的线?@H_450_1@ 开发过程中遇到ggplot2:在分面箱线图中绘制连接每组观察值的线的问题如何解决?下面主要结合日常开发的经验,给出你关于ggplot2:在分面箱线图中绘制连接每组观察值的线的解决方法建议,希望对你解决ggplot2:在分面箱线图中绘制连接每组观察值的线有所启发或帮助;

我有以下数据框:

set.seed(20210714)
dd <- data.frame(Method = rep(c("A","B","C"),each = 60),Pattern = as.factor(rep(c("X","Y","Z"),times = 30)),X1 = runif(180),Complexity = rep(c("High","Low"),times = 90),nsim = rep(rep(1:10,times = 9),each = 2))

我想为每种方法、三种模式以及每种复杂性获得 X1 的箱线图。我使用以下情节:

ggplot(dd,aes(x = Pattern,y = X1,fill = Method)) +
    faCET_grID(~Complexity) + 
    geom_Boxplot() +
    theme(le@R_674_11064@.position = 'bottom',axis.text.x = element_text(angle = 45,hjust = 1)) +
    guIDes(fill = guIDe_le@R_674_11064@(nrow=1))

这给了我附图:

ggplot2:在分面箱线图中绘制连接每组观察值的线

太棒了。但是,方法 A、B 和 C 的每个观察结果都位于“X”内的同一数据集(带有指标 nsim)上(“Y”内的情况相同,“Z”内的情况相同),我想将这些观察结果联系起来(X1 的值)在三种模式中的每一种中的三种方法之间(但不要链接这三种模式,因为那将毫无意义)。

具体来说,我想要一个如下图(用手绘线想象连接这里不同的模拟 IDS):

ggplot2:在分面箱线图中绘制连接每组观察值的线

所以,我尝试了以下方法,但是,我让箱线图不再为每个 x 聚集在一起(并且 x 轴现在也搞砸了)。

library(ggplot2)


ggplot(dd,aes(x = interaction(Method,Pattern),fill = Method)) +
      geom_Boxplot(aes(fill = Method),position = "IDentity")  +
    geom_line(aes(x = interaction(Method,group=interaction(Pattern,nsim)),size = 0.15,Alpha = 0.5,colour = I("#525252"))  +
  faCET_grID(~Complexity) + 
    theme_light()  +
    theme(le@R_674_11064@.position = 'bottom')  +
    guIDes(fill = guIDe_le@R_674_11064@(nrow=1)) +
      geom_line(aes(x = interaction(Method,size = 0.35,colour = I("#525252"))  + 
    geom_point(aes(x = interaction(Method,colour = I("#525252"))  +
    scale_x_discrete(labels = c("","X","","Z","")) + xlab("Pattern")

给出以下内容:

ggplot2:在分面箱线图中绘制连接每组观察值的线

但是 Pattern 的每个设置的箱线图被分开(我希望它们聚集在一起)并且 x 轴也被弄乱了(我有一些不雅的修复)。所以,我需要解决的最重要的事情仍然是每个模式内箱线图之间的空间(我希望它更小),而不是不同模式的箱线图之间的空间。

我该如何解决这个问题?非常感谢您的建议。

解决方法@H_450_1@

这是您要找的吗?

ggplot2:在分面箱线图中绘制连接每组观察值的线

ggplot(dd,aes(x = Pattern,y = X1,fill = Method)) +
  geom_line(aes(group=interaction(Method,nsim)),position = position_dodge(width = 0.8),size = 0.1,alpha = 0.5,colour = I("#525252"))  + 
  faCET_grid(~Complexity) + 
  geom_boxplot() +
  theme(le@R_674_11064@.position = 'bottom',axis.text.x = element_text(angle = 45,hjust = 1)) +
  guides(fill = guide_le@R_674_11064@(nrow=1)) +
  theme_light()
,

我不确定是否有更好的方法来做到这一点,但@R_879_10673@下事情:

set.seed(20210714)
dd <- data.frame(Method = rep(c("A","B","C"),each = 60),Pattern = rep(c("X","Y","Z"),times = 30),X1 = runif(180),Complexity = rep(c("High","Low"),times = 90),nsim = rep(rep(1:10,times = 9),each = 2))

library(ggplot2)

# create dummy dataframe.
dummy.df <- dd
dummy.df[nrow(dd) + 1:2,"Pattern"] <- unique(dd$Pattern)[-3]
dummy.df[nrow(dd) + 1:2,"Method"] <- "ZZZ"
dummy.df[nrow(dd) + 1:2,"Complexity"] <- c("High","Low")

dummy.df$dummy <- interaction(dummy.df$Method,dummy.df$Pattern)             


ggplot(dummy.df,aes(x = dummy,fill = Method)) +
      geom_boxplot(aes(fill = Method)) + 
    geom_line(aes(x = dummy,group=interaction(Pattern,size = 0.15,colour = I("#525252"))  +
  faCET_grid(~Complexity) + 
    theme_light()  +
    theme(le@R_674_11064@.position = 'bottom')  +
    guides(fill = guide_le@R_674_11064@(nrow=1)) +
      geom_line(aes(x = dummy,size = 0.35,colour = I("#525252"))  + 
    geom_point(aes(x = dummy,colour = I("#525252"))  +
   scale_x_discrete(labels = c("","X","","Z","")) +
    xlab("Pattern") +
    scale_fill_brewer(breaks=c("A",type="qual",palette="Dark2")

产生以下结果:

ggplot2:在分面箱线图中绘制连接每组观察值的线

我希望箱线图彼此更接近,如果有人有任何想法,我想就如何做到这一点提供一些建议。也许下一步是把它写成一个通用函数。

大佬总结

以上是大佬教程为你收集整理的ggplot2:在分面箱线图中绘制连接每组观察值的线全部内容,希望文章能够帮你解决ggplot2:在分面箱线图中绘制连接每组观察值的线所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。