2016-09-21 18 views
4

我嘗試添加colorbarnetworkx繪製matplotlib ax1範圍(最亮)和3(即最黑暗的)檢查出的線W /下面cmap。我試圖結合很多PyData功能。如何使用`seaborn`調色板將`colorbar`添加到`networkx`? (Python 3中)

如何使用seaborn調色板在networkx圖上添加顏色條類型功能?

enter image description here

# 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 
nx.draw(G, node_color=[cmap[node] for node in G.nodes()], with_labels=True) 

在這方面,它們都使用matplotlib調色板:http://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut3.html我甚至嘗試將它們轉換爲一個ListedColormap對象,但沒有奏效。

這並不適用於我的情況無論是B/C matplotlib顏色映射工作:Seaborn regplot with colorbar?

同爲http://matplotlib.org/examples/pylab_examples/colorbar_tick_labelling_demo.html

這是我得到的最接近,但它沒有工作,我得到了一個自動縮放Nonetype:How do I use seaborns color_palette as a colormap in matplotlib?

+0

不'nx.draw'回報藝術家創造的? – tacaswell

+1

'nx.draw'不會返回任何東西(至少在本例中不是這樣),這就是爲什麼我會回答我的答案。 – lanery

回答

3

我認爲這裏最好的做法是僞造this answer,因爲您沒有「ScalarMappable」可以使用。

對於離散顏色表

from matplotlib.colors import ListedColormap 
sm = plt.cm.ScalarMappable(cmap=ListedColormap(color_palette), 
          norm=plt.Normalize(vmin=0, vmax=3)) 
sm._A = [] 
plt.colorbar(sm) 

如果你想有一個線性(連續)顏色表,並只顯示整數蜱

sm = plt.cm.ScalarMappable(cmap=sns.cubehelix_palette(3, as_cmap=True), 
          norm=plt.Normalize(vmin=0, vmax=3)) 
sm._A = [] 
plt.colorbar(sm, ticks=range(4)) 

enter image description here

+0

是否可以通過這種方式獲取整數值並使其連續? –

+1

@ O.rka,更新了答案,這是你的意思嗎? – lanery

+0

嗨@lanery感謝您的答案/更新。當我明天早上到我的電腦時,我會測試它,然後批准它! –

相關問題