Как я могу отобразить счетчики в пандах в виде тепловой карты с MatPlotLib? - PullRequest
3 голосов
/ 14 марта 2019

Я работаю с набором данных wine и заметил, что при просмотре счетчиков большие цифры выглядят темнее и вызывают своего рода эффект тепловой карты.Мне было интересно, есть ли способ использовать MatPlotLib для усиления эффекта.

BINS = [0, 50, 100, 150, 200, 1000]
price_by_points = first150.groupby(['points', pd.cut(first150['price'], BINS)]).size().unstack('price').fillna(0)

Производит:

price   (0, 50]  (50, 100]  (100, 150]  (150, 200]  (200, 1000]
points                                                         
80        871.0       12.0         0.0         0.0          0.0
81       1444.0       23.0         0.0         0.0          2.0
82       3874.0       55.0         4.0         0.0          0.0
83       5717.0       84.0         3.0         1.0          2.0
84       9861.0      238.0        15.0         4.0          2.0
85      11313.0      262.0        21.0         7.0          1.0
86      13874.0      447.0        26.0         1.0          3.0
87      18097.0      857.0        55.0        12.0          4.0
88      14811.0     1122.0        91.0         7.0          3.0
89      10194.0     1238.0        97.0        13.0         15.0
90      11909.0     2244.0       180.0        45.0         26.0
91       6810.0     2148.0       209.0        28.0         15.0
92       5135.0     2575.0       287.0        74.0         48.0
93       2432.0     2162.0       399.0        98.0        106.0
94       1067.0     1361.0       338.0       100.0        140.0
95        322.0      696.0       205.0        81.0        162.0
96         77.0      262.0       100.0        48.0         78.0
97          9.0      117.0        59.0        29.0         88.0
98          1.0       36.0        29.0        10.0         37.0
99          0.0        8.0         5.0         5.0         21.0
100         0.0        5.0         0.0         4.0         12.0

1 Ответ

0 голосов
/ 14 марта 2019

Вы можете использовать Matplotlib для создания тепловой карты и аннотировать ее:

import matplotlib.pyplot as plt
import numpy as np

plt.figure()
heatmap = plt.pcolor(df, cmap='viridis')

# Add text
for y in range(df.shape[0]):
    for x in range(df.shape[1]):
        plt.text(x + 0.5, y + 0.5, '{:.0f}'.format(df.iloc[y, x]),
                 color='w',horizontalalignment='center',
                 verticalalignment='center',)
plt.yticks(np.arange(0.5, len(df.index), 1), df.index)
plt.xticks(np.arange(0.5, len(df.columns), 1), df.columns)
plt.colorbar(heatmap)
plt.ylabel('points')
plt.xlabel('price')

Matplotlib heat map

Вы также можете использовать морскую волю для получения аннотированной жарыкарта проще:

import seaborn as sns

plt.figure()
sns.heatmap(df, annot=True, fmt='d')
plt.xlabel('Price')

Seaborn heat map

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

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