我有以下问题。如果我想在不使用任何样式的情况下绘制折线图,则效果很好。但是,一旦我应用样式,就不会拾取颜色图。
让我们举个例子:
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()
此图可生成正确的配色方案:
但是使用样式参数
df.plot(colormap=my_cmap, alpha=0.8, rot=0, xticks=df.index, linewidth=2, style=['o-', 's:'])
plt.show()
它以某种方式覆盖了
如何将样式与所需的色彩图一起使用?
答案 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()