在绘图和图例之间同步颜色

时间:2017-09-13 12:42:28

标签: r igraph

我有这个命令从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])

但是,图例中使用的颜色与图表的颜色不匹配。我该怎么纠正这个?

3 个答案:

答案 0 :(得分:0)

我过去使用过一个名为RColorBrewer的包,可以为你创建彩色托盘。你看过它吗?

一旦颜色匹配或相同,则图例也将具有相同的颜色。

希望这有帮助。

答案 1 :(得分:0)

我同意@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)

结果......

Cubical example with legend

答案 2 :(得分:0)

谢谢大家的投入!

我通过对图例使用fill = rainbow(9)[unique(data2 $ Group)]以某种方式纠正了这个问题。