[英]Synchronise colors between plot and legend
我有此命令可以從igraph生成網絡圖:
plot(ig, layout=layout.fruchterman.reingold(ig),vertex.label=NA,vertex.label.color="black",vertex.frame.color="black",edge.color="black", vertex.color=rainbow(9)[data2$Group], main="MB Network")
data2是另一個對象,其中包含有關igraph對象ig中的頂點分組的信息。 我想按頂點分組為頂點着色,然后為圖例的組顏色准則添加圖例,因此我使用了以下命令:
legend("topleft",legend=unique(data2$Group),col=rainbow(9)[data2$Group])
但是,圖例中使用的顏色與圖的顏色不匹配。 我該如何糾正?
我過去使用過一個名為RColorBrewer的軟件包,它可以為您創建顏色托盤。 你看過了嗎?
一旦顏色匹配或相同,則圖例也將具有相同的顏色。
希望這可以幫助。
我同意@Resh的觀點, RColorBrewer
提供了出色的調色板!
這是著名的立方圖上的示例
require(igraph)
require(RColorBrewer)
我先從外部定義調色板,然后在調色板中選擇了“ Accent”四種顏色。 然后,根據稱為“組”的因子,將每種顏色與八個頂點相關聯。 由於顏色是綠色,紫色,橙色和黃色,因此特意將因子級別設置為G,P,O和Y。 這將幫助我們知道圖形和圖例中的顏色是否正確。
pal <- brewer.pal(4,"Accent")
g <- make_graph("Cubical")
Group <- gl(4, 2, labels = c("G","P","O","Y"))
vertex.col <- pal[Group]
plot(g,
layout=layout.fruchterman.reingold(g),
vertex.label.color="black",
vertex.frame.color="black",
edge.color="black",
vertex.color=vertex.col,
main="Cubical")
legend("topleft",bty = "n",
legend=levels(Group),
fill=pal, border=NA)
結果是...
謝謝大家的投入!
我以某種方式使用圖例的fill = rainbow(9)[unique(data2 $ Group)]糾正了問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.