【问题标题】:How to add `colorbar` to `networkx` using a `seaborn` color palette? (Python 3)如何使用“seaborn”调色板将“colorbar”添加到“networkx”? (Python 3)
【发布时间】:2016-09-21 22:26:00
【问题描述】:

我正在尝试从1(最轻)和3(最暗)的范围内将colorbar 添加到我的networkx 绘制的matplotlib ax [查看带有/ cmap 下面]。我正在尝试结合很多PyData 功能。

如何使用 seaborn 调色板在 networkx 图上添加颜色条类型功能?

# 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?

【问题讨论】:

  • nx.draw 不返回创作的艺术家吗?
  • nx.draw 没有返回任何东西(至少在这种情况下没有),这就是我回答的原因。

标签: python matplotlib colors networkx seaborn


【解决方案1】:

我认为最好的办法是在 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))

【讨论】:

  • 是否可以通过这种方式获取整数值并使其连续?
  • 嘿@lanery 感谢您的回答/更新。明天早上我到电脑前测试一下,然后批准!
  • 完美运行!非常感谢@lanery。你为什么要sm._A = []
  • 另外,我提出了一个后续问题:stackoverflow.com/questions/39646027/…,如果您可能有一些见解,请向您致意colorbar
  • 查看我对您后续问题的回答。
猜你喜欢
  • 2016-07-10
  • 2017-01-31
  • 2015-02-26
  • 2018-10-15
  • 2020-05-22
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多