2016-09-22 10 views
0

Я пытаюсь изменить colorbar на моем участке networkx. Бар становится очень широким, а также сглаживает мой оригинальный участок networkx (слева), когда я добавляю colorbar туда (справа).Как остановить `colorbar` от изменения графика` networkx`? (Python 3)

Как я могу сделать свой colorbar тоньше, а не изменять оригинал? networkx graph?

Мой код ниже с colorbar любезно предоставлен https://stackoverflow.com/users/5285918/lanery, но используется с более крупной сетью.

# Set up Graph 
DF_adj = pd.DataFrame(np.array(
    [[1, 0, 1, 1], 
    [0, 1, 1, 0], 
    [1, 1, 1, 1], 
    [1, 0, 1, 1] ]), columns=['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'], index=['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']) 

G = nx.Graph(DF_adj.as_matrix()) 
G = nx.relabel_nodes(G, dict(zip(range(4), ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']))) 

# Color mapping 
color_palette = sns.cubehelix_palette(3) 
cmap = {k:color_palette[v-1] for k,v in zip(['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'],[2, 1, 3, 2])} 

# Draw 
fig, ax = plt.subplots() 
nx.draw(G, node_color=[cmap[node] for node in G.nodes()], with_labels=True, ax=ax) 

sm = plt.cm.ScalarMappable(cmap=ListedColormap(color_palette), 
          norm=plt.Normalize(vmin=0, vmax=3)) 
sm._A = [] 
fig.colorbar(sm, ticks=range(1,4)) 

enter image description here

ответ

3

Самый простой способ должен быть построить Colorbar на своей оси и поиграться с [слева, снизу, ширина, высота] параметров.

cbaxes = fig.add_axes([0.9, 0.1, 0.015, 0.8]) 
sm = plt.cm.ScalarMappable(cmap=ListedColormap(color_palette), 
          norm=plt.Normalize(vmin=0, vmax=3)) 
sm._A = [] 
plt.colorbar(sm, cax=cbaxes, ticks=range(4)) 

Источник: positioning the colorbar

 Смежные вопросы

  • Нет связанных вопросов^_^