Несоответствие цвета графика корреляции в Python с использованием matplotlib - PullRequest
0 голосов
/ 19 декабря 2018

Я строю корреляцию данных в python, используя matplotlib.Высоко коррелированные данные должны быть темно-красного цвета, но в моем случае они окрашены в желтый цвет.Как ее решить?

Мои данные корреляции таковы:

Screen shot

Мой код такой:

def plot_corr(df, size=11):

"""\
Function plots a graphical correlation matrix for each pair of columns in the dataframe.

Input:
    df: pandas Dataframe
    size: vertical and horizontal size of the plot

Displays:
    matrix of correlation between columns. Blue-cyan-yellow-red-darkred => less to more correlated
                                           0 ------------------------> 1
                                           Expect a darkred line running from top left to bottom right
"""
corr = df.corr()    #data frame correlation function
fig, ax = plt.subplots(figsize=(size,size))
ax.matshow(corr)    # color code  the rectangles by correlation value
plt.xticks(range(len(corr.columns)), corr.columns)   # draw x tick marks
plt.yticks(range(len(corr.columns)), corr.columns)   # draw y tick marks

Мой вывод такой:

Screen Shot

1 Ответ

0 голосов
/ 12 января 2019

Matplotlib изменил цветовую карту по умолчанию с «jet» на «viridis», первая отображает самое высокое значение в темно-красный, вторая в ярко-желтый.

Изменение не было бесплатным,Новая цветовая карта имеет ряд преимуществ по сравнению со старой (если вас интересуют причины, см., например, этот выпуск github .

Одна из возможностей - оставить настройки по умолчанию без изменений и, возможно, изменитьстрока документа в части, описывающей диапазон цветов ...

    """\
...
Displays:
    matrix of correlation between columns. Blue-teal-green-yellow => less to more correlated
                                           0 ------------------------> 1
                                           Expect a bright yellow line running from top left to bottom right.
    """

Еще одно - явно указать цветовую карту, которую вы хотите использовать

def plot_corr(df, size=11):
    ...
    import matplotlib.cm as cm
    ...
    plt.matshow(corr, cmap=cm.jet)
    ...

Последняя возможность состоит в том, чтобывосстановить ALL предыдущее значение по умолчанию для Matplotlib, либо на уровне вызывающей программы

plt.style.use('classic')

, либо на уровне функции

    ...
    with plt.style.context('default'):
        plt.matshow(corr)
        ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...