gpt4 book ai didi

pandas - 为什么 Seaborn 调色板不适用于 Pandas 条形图?

转载 作者:行者123 更新时间:2023-12-02 02:50:23 26 4
gpt4 key购买 nike

演示代码并显示颜色差异的在线 Jupyter 笔记本位于: https://anaconda.org/walter/pandas_seaborn_color/notebook

当我使用 Pandas 数据框方法制作条形图时,颜色是错误的。 Seaborn 改进了 matplotlib 的调色板。 matplotlib 中的所有绘图都会自动使用新的 Seaborn 调色板。但是,Pandas 数据帧中的条形图将恢复为非 Seaborn 颜色。这种行为并不一致,因为 Pandas 数据帧的线图确实使用 Seaborn 颜色。这使得我的绘图看起来具有不同的风格,即使我对所有绘图都使用 Pandas。

如何使用 Pandas 方法进行绘图,同时获得一致的 Seaborn 调色板?

我使用 conda 环境在 python 2.7.11 中运行此代码,其中仅包含此代码所需的包(pandas、matplotlib 和 seaborn)。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame({'y':[5,7,3,8]})

# matplotlib figure correctly uses Seaborn color palette
plt.figure()
plt.bar(df.index, df['y'])
plt.show()

# pandas bar plot reverts to default matplotlib color palette
df.plot(kind='bar')
plt.show()

# pandas line plots correctly use seaborn color palette
df.plot()
plt.show()

最佳答案

感谢 @mwaskom 指向 sns.color_palette()。我一直在寻找它,但不知何故我错过了它,因此 prop_cycle 原来一团糟。

<小时/>

作为解决方法,您可以手动设置颜色。请注意,如果您绘制一列或多列,color 关键字参数的行为会有所不同。

df = pd.DataFrame({'x': [3, 6, 1, 2], 'y':[5, 7, 3, 8]})

df['y'].plot(kind='bar', color=sns.color_palette(n_colors=1))

One column plot

df.plot(kind='bar', color=sns.color_palette())

Two columns plot

我原来的答案:

prop_cycle = plt.rcParams['axes.prop_cycle']
df['y'].plot(kind='bar', color=next(iter(prop_cycle))['color'])
df.plot(kind='bar', color=[x['color'] for x in prop_cycle])

关于pandas - 为什么 Seaborn 调色板不适用于 Pandas 条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35569738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com