Как создать условную раскраску для значений таблицы matplotlib? - PullRequest
0 голосов
/ 14 апреля 2020

Как добавить условную раскраску в эту таблицу?

import pandas as pd
import matplotlib.pyplot as plt


df = pd.DataFrame({'A':[16, 15, 14, 16],
                   'B': [3, -2, 5, 0],
                   'C': [200000, 3, 6, 800000],
                   'D': [51, -6, 3, 2]}) 

fig, ax = plt.subplots(figsize=(10,5))
ax.axis('tight')
ax.axis('off')
the_table = ax.table(cellText = df.values, colLabels = df.columns, loc='center')
plt.show()

enter image description here

Как добавить условную раскраску в таблицу, где значения столбца A и столбца D больше или равны 15, ячейки красные; иначе они зеленые. Если значения столбца B и C больше или равны 5, ячейки отображаются красным цветом; иначе они зеленые. Вот как это должно выглядеть: enter image description here

1 Ответ

2 голосов
/ 14 апреля 2020

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

import pandas as pd
import matplotlib.pyplot as plt


df = pd.DataFrame({'A':[16, 15, 14, 16],
                   'B': [3, -2, 5, 0],
                   'C': [200000, 3, 6, 800000],
                   'D': [51, -6, 3, 2]}) 

colors = []
for _, row in df.iterrows():
    colors_in_column = ["g", "g", "g", "g"]
    if row["A"]>=15:
        colors_in_column[0] = "r"
    if row["B"]>=5:
        colors_in_column[1] = "r"
    if row["C"]>5:
        colors_in_column[2] = "r"        
    if row["D"]>=15:
        colors_in_column[3] = "r"
    colors.append(colors_in_column)

fig, ax = plt.subplots(figsize=(10,5))
ax.axis('tight')
ax.axis('off')
the_table = ax.table(cellText = df.values, colLabels = df.columns, loc='center', cellColours=colors)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...