内置在我的应用程序中,我能够更改调色板,包括色觉缺陷。然而,我的一张图表在 R4 上工作得很好,但在 Okabe-Ito 调色板下全是灰色的,并在图例中列出了颜色的名称。我究竟做错了什么?
data<-as.data.frame(rbind(15.29,84.71))
data<-cbind(x=c("Total Measurement Variance","Total Measurement Variance"),y=data,Group=c("Repeatability","Reproducibility"))
colnames(data)<-c("x","y","Source")
color=palette.colors(n = 8,palette = "R4")
p<-ggplot(data=data,aes(x=x,y=y,fill=Source,label=y))+
geom_bar(stat="identity")+
geom_label(aes(group=Source),fill="white",label=paste0(data$y,"%"),position=position_stack(vjust=.5))+
scale_y_continuous(labels=function (x) paste0(x,"%"))+
scale_fill_manual(values=color[-1])+
labs(title="Components of Variation",x="",y="% of Measurement Error Variance")
p
color=palette.colors(n = 8,palette = "Okabe-Ito")
p<-ggplot(data=data,aes(x=x,y=y,fill=Source,label=y))+
geom_bar(stat="identity")+
geom_label(aes(group=Source),fill="white",label=paste0(data$y,"%"),position=position_stack(vjust=.5))+
scale_y_continuous(labels=function (x) paste0(x,"%"))+
scale_fill_manual(values=color[-1])+
labs(title="Components of Variation",x="",y="% of Measurement Error Variance")
p
Run Code Online (Sandbox Code Playgroud)
问题来自于这样一个事实:由于某种原因,当您在此处使用比较输出palette.colors时,会返回一个命名向量palette = "Okabe-Ito"
palette.colors(n = 8,palette = "R4")
# [1] "#000000" "#DF536B" "#61D04F" "#2297E6" "#28E2E5" "#CD0BBC"
# [7] "#F5C710" "#9E9E9E"
palette.colors(n = 8,palette = "Okabe-Ito")
# black orange skyblue bluishgreen
# "#000000" "#E69F00" "#56B4E9" "#009E73"
# yellow blue vermillion reddishpurple
# "#F0E442" "#0072B2" "#D55E00" "#CC79A7"
Run Code Online (Sandbox Code Playgroud)
当您使用 时scale_fill_manual(values=),如果传递一个命名向量,那么它将尝试将颜色向量中的名称与因子级别的名称进行匹配。由于您的Source值是“重复性”和“再现性”,而不是“橙色”和“天蓝色”等值,因此匹配不起作用,您只会变得灰色。如果您删除名称,那么它不会尝试进行匹配。
color <- unname(palette.colors(n = 8, palette = "Okabe-Ito"))
Run Code Online (Sandbox Code Playgroud)
应该管用
| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |