在熊猫图中使用样式时,为什么不应用colomap?

时间:2018-09-01 09:25:56

标签: python pandas matplotlib seaborn

我有以下问题。如果我想在不使用任何样式的情况下绘制折线图,​​则效果很好。但是,一旦我应用样式,就不会拾取颜色图。

让我们举个例子:

import pandas as pd
import seaborn as sns
from matplotlib.colors import ListedColormap
import matplotlib.pyplot as plt

plt.style.use('ggplot')
df = pd.DataFrame(data=[[100, 100],[105, 110],[107, 118],[112, 110]])
my_cmap = ListedColormap(sns.color_palette("GnBu_d", len(df.columns)).as_hex())

df.plot(colormap=my_cmap, alpha=0.8, rot=0, xticks=df.index, linewidth=2)
plt.show()

此图可生成正确的配色方案:

enter image description here

但是使用样式参数

df.plot(colormap=my_cmap, alpha=0.8, rot=0, xticks=df.index, linewidth=2, style=['o-', 's:'])
plt.show()

它以某种方式覆盖了

enter image description here

如何将样式与所需的色彩图一起使用?

1 个答案:

答案 0 :(得分:1)

查看the source code时,仅当未指定样式时才应用颜色图中的颜色。

我不知道熊猫图包装器中是否有可用的解决方案。一种解决方法是在绘图时临时设置其他颜色循环仪。熊猫绘图包装器将使用matplotlib颜色循环仪,以便使用以下方法可以产生所需的结果。

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

plt.style.use('ggplot')
df = pd.DataFrame(data=[[100, 100],[105, 110],[107, 118],[112, 110]])

cc = plt.cycler("color", sns.color_palette("GnBu_d", len(df.columns)))
with plt.style.context({"axes.prop_cycle" : cc}):
    df.plot(alpha=0.8, rot=0, xticks=df.index, linewidth=2, style=['o-', 's:'])
plt.show()

enter image description here