如何使用cscale和viridis调色板对连续变量进行颜色缩放?

我在图(R中)中绘制了一个生物运输网络,我想根据边缘属性(在我的例子中是一个称为“宽度”的连续变量)在颜色渐变中显示边缘。我不喜欢在以下位置获得的默认调色板:

plot(graph, edge.color=E(graph)$width)

查看igraph plot帮助,我发现了一种使用cscale包中的cscale更改此调色板的方法:

plot(graph,
edge.color=cscale(E(graph)$width,palette = seq_gradient_pal(low = "yellow",high = "red")))

这很好用,而且可能会坚持下去。然而,我想知道我是否可以使用viridis或colorbrewer调色板。我还没想好怎么做。主要的问题是我不能设法将颜色编码分配给所有的边。例如,如果我这样做:

plot(graph,
 edge.color=cscale(E(graph)$width,palette = viridis_pal())

我得到这样的警告:

In seq.default(begin, end, length.out = n) :
  first element used of 'length.out' argument

实际上,第一种颜色应用于所有边缘

如果我尝试指定所有边的长度:

plot(graph,
 edge.color=cscale(E(graph)$width,palette = viridis_pal()(ecount(graph))

我收到这个错误消息:

Error in palette(x) : invalid argument type)

有什么想法吗?

转载请注明出处:http://www.songfuwangmfj.com/article/20230526/1460832.html