У меня есть следующая проблема, которую я не мог решить, хотя сейчас трачу на это несколько часов и считаю, что это будет легко. В основном я занимаюсь построением сетей. Каждый узел имеет значение от 0 до 1. Теперь я цвет каждого узла в соответствии с его значением. 0 соответствует красному узлу и 1 - зеленому узлу. Я делаю это с помощью follwing кода:Создайте собственную панель цветов для графика networkx
for x in range(gn):
G.add_node(x)
cn = value[x]
cn *= 100
if cn == 100:
cn = 99
if cn < 50:
# green to yellow
cg = math.floor(255 * (cn/50))
cr = 255
else:
# yellow to red
cg = 255
cr = math.floor(255 * ((50 - cn % 50)/50))
cb = 0
color_map.append('#%02x%02x%02x' % (cr, cg, cb))
А потом в коде:
fig, ax = plt.subplots()
nx.draw(G, pos, width=weights, node_color=color_map, ax=ax)
plt.show()
Теперь я просто хочу, чтобы иметь Colorbar рядом с сетью, так что наблюдатель участка имеет какой цвет соответствует значению. Я надеюсь, что вы можете мне помочь. Заранее спасибо :) (The Colorbar должна начинаться от 0 до 1, даже в том случае, что есть также узлы со значениями выше 0,5 или около того.)
Edit: Минимальный рабочий пример:
import networkx as nx
import matplotlib.pyplot as plt
import numpy
import math
gn = 20
color_map = []
G = nx.Graph()
value = numpy.random.uniform(0, 1, gn)
for x in range(gn):
G.add_node(x)
cn = value[x]
cn *= 100
if cn == 100:
cn = 99
if cn < 50:
# green to yellow
cg = math.floor(255 * (cn/50))
cr = 255
else:
# yellow to red
cg = 255
cr = math.floor(255 * ((50 - cn % 50)/50))
cb = 0
color_map.append('#%02x%02x%02x' % (cr, cg, cb))
pos = nx.spring_layout(G)
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
nx.draw(G, pos, node_color=color_map, ax=ax)
plt.show()
Вы можете отделяйте создание графа от и преобразование цвета обеспечивают минимальный пример, который имеет '' gn' или G' определенный ?! – ImportanceOfBeingErnest
Был ли минимальный пример. Надеюсь, что поможет :) – HighwayJohn