gpt4 book ai didi

R 格子 - 尝试使用 y.scale.components 自定义更改标签颜色

转载 作者:行者123 更新时间:2023-12-04 04:59:06 28 4
gpt4 key购买 nike

我目前尝试通过更改其 Y 轴标签颜色来自定义格子平行图,具体取决于这些相同标签的特征。我创建了一个自定义的 y.scale.components 函数,如许多书籍/论坛中所述。但是,在将新颜色向量分配给 ans$left$labels$col 参数后,绘图仅使用默认颜色(黑色)。

这是代码:

test2 <- read.table(textConnection("

species evalue l1 l2 l3
Daphnia.pulex 1.0E-6 17 41 35
Daphnia.pulex 1.0E-10 11 30 25
Daphnia.pulex 1.0E-20 4 14 17
Daphnia.pulex 1.0E-35 4 8 15
Daphnia.pulex 1.0E-50 1 4 8
Daphnia.pulex 1.0E-75 0 2 6
Ixodes.scapularis 1.0E-6 7 20 118
Ixodes.scapularis 1.0E-10 6 17 107
Ixodes.scapularis 1.0E-20 4 6 46
Ixodes.scapularis 1.0E-35 2 3 14
Ixodes.scapularis 1.0E-50 0 0 5
Ixodes.scapularis 1.0E-75 0 0 2
")->con,header=T);close(con)

#data.frame to assign a color to the data, depending on species names on y axis
orga<-c("Daphnia.pulex","Ixodes.scapularis")
color<-c("cornsilk2","darkolivegreen1" );
phylum<-c("arthropoda","arthropoda" );
colorChooser<-data.frame(orga,color,phylum)

#fonction for custom rendering of left y axis labels
yscale.components.custom<-function(...) {
ans<-yscale.components.default(...)
#vector for new label colors, grey60 by default
new_colors<-c()
new_colors<-rep("grey60",length(ans$left$labels$labels))
# the for() check all labels character and assign the corresponding color with the colorChooser data.frame
n<-1
for (i in ans$left$labels$labels) {
new_colors[n]<-as.character(colorChooser$color[colorChooser$orga==i])
#got the color corresponding to the label, with the colorChooser dataframe
n<-n+1
}
print(length(new_colors))
cat(new_colors,sep="\n") #print the content of the generated color vector
ans$left$labels$col<-new_colors #assign this vector to col parameter
ans
}

#plot everything
bwplot( reorder(species,l1,median)~l1,
data=test2,
panel = function(..., box.ratio) {
panel.grid(h=length(colnames(cdata[,annot.arthro]))-1,v=0,col.line="grey80")
panel.violin(..., col = "white",varwidth = FALSE, box.ratio = box.ratio )
panel.bwplot(..., fill = NULL, box.ratio = .07)
},
yscale.components=yscale.components.custom
)

这是 cat() 命令的输出,包含在 yscale.components.custom 函数中。如您所见,它输出两倍的颜色标签,但分配给 ans$left$labels$col 的向量长度为​​ 2。是否有第二个调用设置 Y 轴标签颜色?它来自哪里?
[1] 2
darkolivegreen1
cornsilk2
[1] 2
darkolivegreen1
cornsilk2

欢迎任何帮助,我不明白为什么将颜色分配给 ans$left$labels$col 但所有内容都是用黑色绘制的。我还想更改 fiddle 边框颜色,使用相同的 colorChooser data.frame,但那是另一回事了...

最佳答案

在向 Deepayan Sarkar 询问后, ans$left$labels$col 值显然在格子执行过程中被忽略了。

我使用了带有“scales”参数的不同解决方案。不幸的是,我不能再依靠格重新排序函数来按中位数重新排序我的数据系列。

对于上面提到的代码,我手动对它们进行排序,然后创建一个具有相应顺序的颜色向量。我不能再依赖格子重新排序(格子公式中的“重新排序”)。然后,我设置我的 axix 标签颜色

scales=list(col=c(color1,color2,...))

关于R 格子 - 尝试使用 y.scale.components 自定义更改标签颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16358373/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com