我正在尝试在ggplot2中创建一个森林图 . Y轴上显示的一些类别被分组(即同一因子的多个级别),因此我想对这些点进行颜色编码 . 但是,对于我的生活,我无法弄清楚R是如何解释颜色向量的 .

这是我正在使用的代码:

forest.df$labs<-c("Factor1 Level1", "Factor1 Level2", "Factor1 Level3", "Factor1 Level4", "Factor1 Level5", "Factor2 Level1", "Factor2 Level2", "Factor2 Level3", "Factor2 Level4", "Factor3 Level1", "Factor3 Level2", "Factor4", "Factor5", "Factor6", "Factor7", "Factor8")
colorname<-c("Pink", "Red", "Red", "Purple", "Green", "Blue", "Blue", "Blue", "Blue", "Yellow","Yellow","Yellow","Yellow","Yellow","Orange","Black")
ggplot(forest.df, aes(x=OR, y = rowname)) + 
  geom_errorbarh(aes(xmin=exp2.5,xmax=exp97.5),height=0.667) +
  geom_point(size=5, colour=colorname)+
  scale_y_discrete(labels=forest.df$labs)+
  geom_vline(xintercept=1,linetype="dashed")+
  coord_cartesian(xlim=c(-0.3,30))

但这是我得到的情节:
enter image description here

我喂这个颜色矢量:

c("Yellow", "Yellow", "Yellow", "Yellow", "Yellow", "Blue", "Blue", "Blue", "Blue", "Red", "Red", "Black", "Green", "Purple", "Pink", "Orange")

但是出来的东西看起来更像是:黑色,红色,绿色,紫色,红色,蓝色,蓝色,蓝色,蓝色,黄色,黄色,橙色,黄色,黄色,黄色,粉红色(从下到上阅读) .

通过纯粹的反复试验,我能够得到一个向量,给我我想要的颜色,但我无法弄清楚为什么我需要在这个看似荒谬的顺序中给出颜色向量 . 通过喂它这个矢量:

colorname<-c("Pink", "Red", "Red", "Purple", "Green", "Blue", "Blue", "Blue", "Blue", "Yellow","Yellow","Yellow","Yellow","Yellow","Orange","Black")

我能够得到以下情节(这是我想要的):

enter image description here

任何人都可以解释这里发生了什么以及我做错了什么?我真的很感激!