首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas df.plot设置与数据框列成比例的颜色

Pandas df.plot设置与数据框列成比例的颜色
EN

Stack Overflow用户
提问于 2019-10-31 19:15:25
回答 1查看 879关注 0票数 0

问题:

我有一个pandas数据帧df,其中6行表示不同的变量。

我希望绘制条形图中的前两列,并希望使用第三列score根据现有的颜色映射(例如matplotlib viridis颜色映射)对条形图进行着色。

此数据帧如下所示:

代码语言:javascript
复制
    ID  count   score
0    4      1       3
1    5      4       4
2    5      8       5
3    3      7       2
4    1      5       5
5    1      3       4

我的代码目前是什么样子的:

代码语言:javascript
复制
df.plot('ID', 'count', kind='bar', figsize=(15,5), ax=plt.subplot(122), colors=cm.viridis.colors)
plt.show()

但所有条的颜色都是一种独特的紫色。

比方说,我希望按照score列中的值对viridis颜色映射进行采样。

有没有简单的方法可以做到这一点?

编辑2019-10-31

按照第一个答案中的建议使用seaborn会给我一个错误:

代码语言:javascript
复制
my_palette = sns.color_palette(plt.get_cmap('viridis'), 5)
sns.barplot(x="New ID", y="count", hue="Note", data=df, palette=my_palette)

返回错误:

代码语言:javascript
复制
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-48-1943cafa0d79> in <module>
----> 1 my_palette = sns.color_palette(plt.get_cmap('viridis'), 5)

/usr/local/lib/python3.6/dist-packages/seaborn/palettes.py in color_palette(palette, n_colors, desat)
    238 
    239     # Always return as many colors as we asked for
--> 240     pal_cycle = cycle(palette)
    241     palette = [next(pal_cycle) for _ in range(n_colors)]
    242 

TypeError: 'ListedColormap' object is not iterable

编辑2019-11-05

使用建议的代码会导致结果图中出现带有x-tick的未对齐的条形图(我预计它会在x轴上的条形图下方居中),特别是当每个类别只有一个条形图时,如下图所示:

此外,我希望能够考虑df['count']列中的'NaN'值。目前,如果有一个'NaN'值,它会引发一个:

TypeError: unsupported operand type(s) for /: 'str' and 'int'

所以,我必须将这个值设置为等于0,即使它不是真正的零。

EN

回答 1

Stack Overflow用户

发布于 2019-10-31 19:26:07

最简单的方法是这样使用seaborn.barplot

代码语言:javascript
复制
import seaborn as sns
ax = sns.barplot(x="ID", y="count", hue="score", data=df, palette=your_palette)

您可以通过以下方式创建调色板:

代码语言:javascript
复制
your_palette = sns.color_palette('inferno', n_point)

其中n_point是您的客户调色板中不同颜色的数量。

希望能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58642183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档