大佬教程收集整理的这篇文章主要介绍了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))
这给了我附图:
太棒了。但是,方法 A、B 和 C 的每个观察结果都位于“X”内的同一数据集(带有指标 nsim)上(“Y”内的情况相同,“Z”内的情况相同),我想将这些观察结果联系起来(X1 的值)在三种模式中的每一种中的三种方法之间(但不要链接这三种模式,因为那将毫无意义)。
具体来说,我想要一个如下图(用手绘线想象连接这里不同的模拟 IDS):
所以,我尝试了以下方法,但是,我让箱线图不再为每个 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")
给出以下内容:
但是 Pattern 的每个设置的箱线图被分开(我希望它们聚集在一起)并且 x 轴也被弄乱了(我有一些不雅的修复)。所以,我需要解决的最重要的事情仍然是每个模式内箱线图之间的空间(我希望它更小),而不是不同模式的箱线图之间的空间。
我该如何解决这个问题?非常感谢您的建议。
这是您要找的吗?
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:在分面箱线图中绘制连接每组观察值的线所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。