Conditionally change background color of specific cells

Viewed 5036

I have a DataFrame and I can save it as a png file. But now I want to change the background color of specific cells who meet a certain condition.

Conditions:

  • Numbers who are 80 or higher must get a green background.
  • Numbers below 80 must get a red background.
  • All column names and index cells need a black background with a white text color.

The following posts came close to what I want but didn't provided with the answer I needed. Post 1 Post 2

My code:

import matplotlib.pyplot as plt
from pandas.tools.plotting import table
import pandas as pd

#My dataframe
df = pd.DataFrame({
    'Weeks' : [201605, 201606, 201607, 201608],
    'Computer1' : [50, 77, 96, 100],
    'Computer2' : [50, 79, 100, 80],
    'Laptop1'   : [75, 77, 96, 95],
    'Laptop2'   : [86, 77, 96, 40],
    'Phone'     : [99, 99, 44, 85],
    'Phone2'    : [93, 77, 96, 25],
    'Phone3'    : [94, 91, 96, 33]
})
df2 = df.set_index('Weeks') #Makes the column 'Weeks' the index.

#Make a png file out of an dataframe.
plt.figure(figsize=(9,3))
ax = plt.subplot(211, frame_on=False) # no visible frame
ax.xaxis.set_visible(False)  # hide the x axis
ax.yaxis.set_visible(False)  # hide the y axis
table(ax, df2, rowLabels=df2.index, colLabels=df2.columns, loc='center', cellColours=None)
plt.savefig('mytable.png') #save it as an png.

This is how it currently looks: enter image description here

This is how I want it to look enter image description here

1 Answers
Related