【问题标题】:How to stop `colorbar` from reshaping `networkx` plot? (Python 3)如何阻止`colorbar`重塑`networkx`情节? (Python 3)
【发布时间】:2017-01-31 10:39:06
【问题描述】:

我正在尝试更改我的 networkx 图上的 colorbar。当我在那里添加colorbar(右)时,该栏变得特别宽,并且还平滑了我原来的networkx 图(左)。

我怎样才能使我的colorbar 更薄而不改变我原来的networkx 图表?

下面我的代码与colorbarhttps://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))

【问题讨论】:

    标签: python matplotlib colors networkx colorbar


    【解决方案1】:

    最简单的方法应该是在自己的轴上绘制颜色条并使用 [left, bottom, width, height] 参数。

    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

    【讨论】:

      猜你喜欢
      • 2015-08-21
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      相关资源
      最近更新 更多