Линии цветовой карты отображаются как один и тот же цвет.

Я расширяю этот вопрос, чтобы выяснить, как сделать каждую из линий разным оттенком красного или черного. Это может потребовать создания пользовательской карты цветов или какой-либо настройки карты цветов «RdGy».

Используя данные и пакеты из последнего вопроса, вот что у меня есть:

df0.groupby([df0.ROI.str.split('_').str[0],'Band']).Mean.plot.kde(colormap='RdGy')
plt.legend()
plt.show()

А фигура выглядит так:

введите здесь описание изображения

Но я хочу, чтобы линии «bcs» были оттенками черного, а «красные» линии были оттенками красного. Как это возможно?

Также было бы здорово настроить имена линий в легенде, например «BCS Band 1» и т. д., но тоже не уверен, как это сделать.


person JAG2024    schedule 18.04.2017    source источник


Ответы (1)


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

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame()
nam = ["red", "bcs"]
for i in range(8):
    df['{}_{}'.format(nam[i//4],i%4)] = np.random.normal(i, i%4+1, 100)

nam = {"red":plt.cm.Reds, "bcs": plt.cm.gray_r}
fig, ax = plt.subplots()
for i, s in enumerate(df.columns):
    df[s].plot(kind='density', color=nam[s.split("_")[0]]((i%4+1)/4.), 
                label=" Band ".join(s.split("_")))

plt.legend()
plt.show()

введите здесь описание изображения

Конечно, вы также можете просто использовать список строк в качестве записей легенды. Либо предоставив их аргументу метки функции построения графика,

labels = "This is a legend with some custom entries".split()
for i, s in enumerate(df.columns):
    df[s].plot(kind='density', color=nam[s.split("_")[0]]((i%4+1)/4.), 
                label=labels[i])

or

используя аргумент labels функции legend,

labels = "This is a legend with some custom entries".split()
for i, s in enumerate(df.columns):
    df[s].plot(kind='density', color=nam[s.split("_")[0]]((i%4+1)/4.) )

plt.legend(labels=labels)

введите здесь описание изображения

person ImportanceOfBeingErnest    schedule 18.04.2017
comment
Есть ли способ просто вручную ввести имена в легенду вместо красной полосы 0 и т. д., но определить вектор со строками, которые я хочу использовать? @ImportanceOfBeingErnest - person JAG2024; 19.04.2017