当前位置: 首页 > 知识库问答 >
问题:

为什么Seaborn调色板不适用于熊猫条形图?

应嘉容
2023-03-14

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

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

如何使用熊猫方法绘制,同时获得一致的海运调色板?

我在Python2.7中运行这个。11使用conda环境,该环境仅包含此代码所需的包(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()

共有2个答案

蒋向笛
2023-03-14

这是pandas中一个专门针对条形图(我想也包括盒形图)的错误,在pandas master中已修复(请参阅报告问题和修复它的PR)
这将是0.18。0将在未来几周内发布。

岳浩穰
2023-03-14

归功于@mwaskom指向sns.color_palette()。我正在寻找,但不知何故,我错过了它,因此最初的混乱与prop_cycle

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

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))
df.plot(kind='bar', color=sns.color_palette())

我原来的答覆是:

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])
 类似资料:
  • 我试图从seaborn文档中创建一个这样的图形,但是条纹图的边缘颜色由色调决定。这是我的尝试: 但是男性和女性的调色板似乎是不同的。如何为两个类别使用相同的调色板? 我用海运0.6.dev

  • 颜色在可视化中起着比任何其他方面更重要的作用。 有效使用时,颜色为绘图增加了更多价值。 调色板是指平面,画家在其上排列和混合涂料。 建筑调色板 Seaborn提供了一个名为color_palette()的函数,可用于为图表添加颜色并为其添加更多美学价值。 用法 (Usage) seaborn.color_palette(palette = None, n_colors = None, desat

  • 问题内容: Seaborn提供了一个名为“调色板”的功能,可以让您轻松地 为绘图创建新的调色板。 我想将调色板转换为cmap,我可以在matplotlib中使用, 但我不明白我该怎么做。 不幸的是,像“cubehelix\u palete”,“light\u palete”这样的函数,有一个 “作为\u cmap”参数不幸的是,“调色板”没有。 问题答案: 你必须将一系列颜色从seaborn调色板

  • 问题内容: 我试图读取通过via 创建的数据框,但得到了。我认为这可能与索引为MultiIndex的事实有关,但我不确定如何处理。 调用了55k行的原始数据框,并通过以下方式创建了该数据框: 如果要使用它,这是输出。 当我对这小部分数据(5行)进行处理时,我得到一个。 这是完整的堆栈: 但是,当我在整个数据帧(55k行)上执行此操作时,我得到一个无效的指针错误,并且IPython内核死亡。有任何想

  • 问题内容: 假设我要绘制一个条形图,其中条形的色调代表一些连续的数量。例如 这里的传说有点愚蠢,我绘制的柱数越多,情况就越糟。最有意义的是颜色条(例如在调用时使用的颜色条)。有没有办法让seaborn做到这一点? 问题答案: 另一个答案是有点hacky。因此,更严格的解决方案(不生成随后删除的图)将涉及手动创建ScalarMappable作为色条的输入。

  • 以下代码为与分组变量关联的每个“色调”值生成一个带有不同颜色条的条形图: 我想更改颜色,以便属于相同分组值的所有条都具有相同的颜色。也就是说,的前两个栏应该是橙色,而的最后两个栏应该是蓝色。 我已经尝试了'sns.barplot()的参数。但是,除非我遗漏了什么,否则这允许我指定每个色调级别的颜色,但不能单独指定分组变量的值。 我也看了一下这个相关问题的答案,它问了一些关于。公认的答案建议使用轴的