如何创建具有不同颜色叠加点的箱线图?
How to create a box plot with superimposed points in different color?
我目前正在尝试绘制带有叠加点的箱线图。箱线图中的点必须根据因子变量在颜色上有所不同。代码运行良好,直到这里:
MioBox <- ggplot(mydata, aes(x=mng, y=Active, fill=mng))+
geom_boxplot(color="black", notch=TRUE)+
geom_point(position="jitter", color="blue", alpha=.5)+
geom_rug(side="l", color="black")+
facet_grid(.~hor,scales = "free", space = "free")+
labs(title='bla bla bla')
(见下图)
当我尝试根据变量为箱线图中的点添加颜色时plot
MioBox <- ggplot(mydata, aes(x=mng, y=Active, fill=mng))+
geom_boxplot(color="black", notch=TRUE)+
#geom_point(position="jitter", color="blue", alpha=.5)+
geom_rug(side="l", color="black")+
facet_grid(.~hor,scales = "free", space = "free")+
labs(title='bla bla bla')
MioBox + scale_fill_manual(values=c("#669966", "#CC9966", "#CCCC66"))+
geom_point(position="jitter",aes(color = factor(mydata$plot)))
我得到一个箱线图,它与变量图不匹配,变量图在每个箱线图中为每种颜色分配 3 个点。结果是我总是有 9 个点,但大多数时候一种颜色有 6 个点,另一种颜色有 3 个点,并且缺少一种颜色:
这里是重现问题的 table:
mydata <- read.table(header=TRUE, text="
Active hor plot mng
7.20 F 1 CH
8.80 O 1 CH
9.30 F 1 CH
9.20 O 1 CH
9.70 F 1 CH
9.30 O 1 CH
9.10 F 2 CH
7.50 O 2 CH
7.50 F 2 CH
8.70 O 2 CH
9.90 F 2 CH
7.60 O 2 CH
9.70 F 3 CH
7.70 O 3 CH
8.90 F 3 CH
8.60 O 3 CH
8.30 F 3 CH
8.30 O 3 CH
8.50 L 1 CH
7.40 L 1 CH
8.00 L 1 CH
9.70 L 2 CH
8.90 L 2 CH
8.40 L 2 CH
9.80 L 3 CH
8.00 L 3 CH
7.00 L 3 CH
7.30 F 1 Fe
6.60 O 1 Fe
6.50 F 1 Fe
6.60 O 1 Fe
6.90 F 1 Fe
5.80 O 1 Fe
6.60 F 2 Fe
7.00 O 2 Fe
6.00 F 2 Fe
5.10 O 2 Fe
6.10 F 2 Fe
5.10 O 2 Fe
5.10 F 3 Fe
6.50 O 3 Fe
7.70 F 3 Fe
6.90 O 3 Fe
5.20 F 3 Fe
6.30 O 3 Fe
6.50 L 1 Fe
5.00 L 1 Fe
7.80 L 1 Fe
5.10 L 2 Fe
5.50 L 2 Fe
5.60 L 2 Fe
5.50 L 3 Fe
7.80 L 3 Fe
7.70 L 3 Fe
7.20 F 1 W
8.80 O 1 W
7.80 F 1 W
7.80 O 1 W
7.90 F 1 W
8.10 O 1 W
8.60 F 2 W
7.40 O 2 W
7.40 F 2 W
8.40 O 2 W
7.70 F 2 W
8.90 O 2 W
6.70 F 3 W
6.10 O 3 W
7.50 F 3 W
8.60 O 3 W
7.80 F 3 W
8.60 O 3 W
8.30 L 1 W
8.20 L 1 W
8.70 L 1 W
8.60 L 2 W
6.80 L 2 W
6.30 L 2 W
7.30 L 3 W
7.10 L 3 W
7.70 L 3 W
")
有人可以帮我解决这个问题吗?
问题在于你调用 mydata$plot
而你应该只调用 plot
。 ggplot 对象已经有预定义的 data frame
.
您可以像这样重写最后几行来修复它:
MioBox +
scale_fill_manual(values=c("#669966", "#CC9966", "#CCCC66"))+
geom_point(position="jitter",aes(color = factor(plot)))
我目前正在尝试绘制带有叠加点的箱线图。箱线图中的点必须根据因子变量在颜色上有所不同。代码运行良好,直到这里:
MioBox <- ggplot(mydata, aes(x=mng, y=Active, fill=mng))+
geom_boxplot(color="black", notch=TRUE)+
geom_point(position="jitter", color="blue", alpha=.5)+
geom_rug(side="l", color="black")+
facet_grid(.~hor,scales = "free", space = "free")+
labs(title='bla bla bla')
(见下图)
当我尝试根据变量为箱线图中的点添加颜色时plot
MioBox <- ggplot(mydata, aes(x=mng, y=Active, fill=mng))+
geom_boxplot(color="black", notch=TRUE)+
#geom_point(position="jitter", color="blue", alpha=.5)+
geom_rug(side="l", color="black")+
facet_grid(.~hor,scales = "free", space = "free")+
labs(title='bla bla bla')
MioBox + scale_fill_manual(values=c("#669966", "#CC9966", "#CCCC66"))+
geom_point(position="jitter",aes(color = factor(mydata$plot)))
我得到一个箱线图,它与变量图不匹配,变量图在每个箱线图中为每种颜色分配 3 个点。结果是我总是有 9 个点,但大多数时候一种颜色有 6 个点,另一种颜色有 3 个点,并且缺少一种颜色:
这里是重现问题的 table:
mydata <- read.table(header=TRUE, text="
Active hor plot mng
7.20 F 1 CH
8.80 O 1 CH
9.30 F 1 CH
9.20 O 1 CH
9.70 F 1 CH
9.30 O 1 CH
9.10 F 2 CH
7.50 O 2 CH
7.50 F 2 CH
8.70 O 2 CH
9.90 F 2 CH
7.60 O 2 CH
9.70 F 3 CH
7.70 O 3 CH
8.90 F 3 CH
8.60 O 3 CH
8.30 F 3 CH
8.30 O 3 CH
8.50 L 1 CH
7.40 L 1 CH
8.00 L 1 CH
9.70 L 2 CH
8.90 L 2 CH
8.40 L 2 CH
9.80 L 3 CH
8.00 L 3 CH
7.00 L 3 CH
7.30 F 1 Fe
6.60 O 1 Fe
6.50 F 1 Fe
6.60 O 1 Fe
6.90 F 1 Fe
5.80 O 1 Fe
6.60 F 2 Fe
7.00 O 2 Fe
6.00 F 2 Fe
5.10 O 2 Fe
6.10 F 2 Fe
5.10 O 2 Fe
5.10 F 3 Fe
6.50 O 3 Fe
7.70 F 3 Fe
6.90 O 3 Fe
5.20 F 3 Fe
6.30 O 3 Fe
6.50 L 1 Fe
5.00 L 1 Fe
7.80 L 1 Fe
5.10 L 2 Fe
5.50 L 2 Fe
5.60 L 2 Fe
5.50 L 3 Fe
7.80 L 3 Fe
7.70 L 3 Fe
7.20 F 1 W
8.80 O 1 W
7.80 F 1 W
7.80 O 1 W
7.90 F 1 W
8.10 O 1 W
8.60 F 2 W
7.40 O 2 W
7.40 F 2 W
8.40 O 2 W
7.70 F 2 W
8.90 O 2 W
6.70 F 3 W
6.10 O 3 W
7.50 F 3 W
8.60 O 3 W
7.80 F 3 W
8.60 O 3 W
8.30 L 1 W
8.20 L 1 W
8.70 L 1 W
8.60 L 2 W
6.80 L 2 W
6.30 L 2 W
7.30 L 3 W
7.10 L 3 W
7.70 L 3 W
")
有人可以帮我解决这个问题吗?
问题在于你调用 mydata$plot
而你应该只调用 plot
。 ggplot 对象已经有预定义的 data frame
.
您可以像这样重写最后几行来修复它:
MioBox +
scale_fill_manual(values=c("#669966", "#CC9966", "#CCCC66"))+
geom_point(position="jitter",aes(color = factor(plot)))