首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >R中igraph顶点上的值的颜色条图例

R中igraph顶点上的值的颜色条图例
EN

Stack Overflow用户
提问于 2019-07-16 02:02:25
回答 2查看 994关注 0票数 1

我是R的新手,我开始在那里使用igraph进行图形可视化。下面的例子创建了一个由10个顶点组成的简单网络,并根据颜色值对它们进行着色(在本例中,为简单起见,我将其设置为与顶点的ids相同)。

代码语言:javascript
复制
library(igraph)
vertices <- 1:10
first <- 1:10
second <- c(2:10,1)
edges = cbind(first,second)
color = 1:10
net = graph_from_data_frame(edges,vertices=vertices ,directed=F )
V(net)$color = color
plot(net)

然而,从这个曲线图上看,并不清楚哪些颜色对应哪些数字:

为了解决这个问题,我尝试创建了各种我能够在文档和在线上找到的图例。以下面的代码为例:

代码语言:javascript
复制
legend("bottom", legend=levels(as.factor(color)), bty = "n", cex =
1.5, pt.cex = 3, pch=20, col = color , horiz = FALSE , inset = c(0.1,
-0.3)

但在这种情况下,结果是混乱的,模糊了图片,并且没有提供将节点上的值范围映射到颜色光谱的连续颜色条。我能找到的其他选择也好不到哪里去。

你知道如何在图片下方或右边放置一个连续的颜色条(这样它就不会覆盖图片的任何部分)吗?理想情况下,颜色条应该显示颜色的整个连续光谱和与颜色对应的一些值(至少是最极端的颜色)?你知道如何做到这一点吗?

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

发布于 2019-07-16 02:47:39

你应该看看kokkenbaker的这个答案,尽管它有点麻烦,但它可能正是你所需要的。How to add colorbar with perspective plot in R

票数 0
EN

Stack Overflow用户

发布于 2019-07-17 03:35:30

多亏了ealbsho93,我才能产生以下解决方案。它创建一个调色板,然后将图上顶点上的值映射到调色板并显示它。这并不简单,但结果看起来要好得多(见下文)

代码语言:javascript
复制
rm(list=ls())
library(igraph)
library(fields)

vertices <- 1:10
first <- 1:10
second <- c(2:10,1)
edges = cbind(first,second)
net = graph_from_data_frame(edges,vertices=vertices ,directed=F )

#Here we create a sample function on the vertices of the graph
color_num = 10:1
#create a color palette of the same size as the number of vertices.
jet.colors <- colorRampPalette( rainbow( length( unique(color_num) ) ) )
color_spectrum <- jet.colors( length( unique(color_num ) ) )
#and over here we map the pallete to the order of values on vertices
ordered <- order(color_num)
color <- vector(length = length(ordered),mode="double")
for ( i in 1:length(ordered) )
{
    color[ ordered[i] ] <- color_spectrum [ i ]
}
V(net)$color = color

#Display the graph and the legend.
plot(net)
image.plot(legend.only=T, zlim=range(color_num), col=color_spectrum )

如果有更好的解决方案,请让我知道。反之亦然,这个似乎可以使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57044991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档