Steps
Using the subplots() method, create a figure and a set of subplots with figure size (7, 7).
Create a data frame with two keys, time and speed.
Get the size of the array.
Add a table to the current axis using the table method.
Shrink the font size until the text fits into the cell width.
Set the font size in the table.
Set the face color, edge color, and text color by iterating the matplotlib table.
Save and display the figure.
Example
import numpy as np import pandas as pd from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True fig, ax = plt.subplots() df = pd.DataFrame(dict(time=list(pd.date_range("2021-01-01 12:00:00", periods=10)), speed=np.linspace(1, 10, 10))) size = (np.array(df.shape[::-1]) + np.array([0, 1])) * np.array([3.0, 6.0]) mpl_table = ax.table(cellText=df.values, bbox=[0, 0, 1, 1], colLabels=df.columns) mpl_table.auto_set_font_size(False) mpl_table.set_fontsize(12) for k, cell in mpl_table._cells.items(): cell.set_edgecolor('black') if k[0] == 0 or k[1] < 0: cell.set_text_props(weight='bold', color='w') cell.set_facecolor('red') else: cell.set_facecolor(['green', 'yellow'][k[0] % 2]) plt.show()