Почему colomap не применяется, когда я использую стиль на графике панд? - PullRequest
0 голосов
/ 01 сентября 2018

У меня следующая проблема. Если я хочу построить линейную диаграмму без использования какого-либо стиля с цветовой картой, это прекрасно работает. Однако, как только я применяю стиль, цветовая карта не подбирается.

Давайте сделаем пример:

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 голосов
/ 01 сентября 2018

Глядя на исходный код цвета из цветовой карты применяются только тогда, когда стиль не указан.

Я не знаю, есть ли решение, доступное в обертке для построения панд. Обходной путь - временно установить другой цветовой цикл при построении графика. Оберточная машина Pandas будет использовать цветовую циклическую матрицу 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...