Matplotlib.pyplot.table() is a subpart of matplotlib library in which a table is generated using the plotted graph for analysis. This method makes analysis easier and more efficient as tables give a precise detail than graphs. The matplotlib.pyplot.table creates tables that often hang beneath stacked bar charts to provide readers insight into the data generated by the above graph.
Syntax: matplotlib.pyplot.table(cellText=None, cellColours=None, cellLoc=’right’, colWidths=None,rowLabels=None, rowColours=None, rowLoc=’left’, colLabels=None, colColours=None, colLoc=’center’, loc=’bottom’, bbox=None, edges=’closed’, **kwargs)
Example 1: Consider a graph analyzing the increase in price of crops in months. The following code is for a non linear graph.
# importing necessary packagess import numpy as np
import matplotlib.pyplot as plt
# input data values data = [[ 322862 , 876296 , 45261 , 782372 , 32451 ],
[ 58230 , 113139 , 78045 , 99308 , 516044 ],
[ 89135 , 8552 , 15258 , 497981 , 603535 ],
[ 24415 , 73858 , 150656 , 19323 , 69638 ],
[ 139361 , 831509 , 43164 , 7380 , 52269 ]]
# preparing values for graph columns = ( 'Soya' , 'Rice' , 'Wheat' , 'Bakri' , 'Ragi' )
rows = [ '%d months' % x for x in ( 50 , 35 , 20 , 10 , 5 )]
values = np.arange( 0 , 2500 , 500 )
value_increment = 1000
# Adding pastel shades to graph colors = plt.cm.Oranges(np.linspace( 22 , 3 , 12 ))
n_rows = len (data)
index = np.arange( len (columns)) + 0.3
bar_width = 0.4
# Initializing vertical-offset for the graph. y_offset = np.zeros( len (columns))
# Plot bars and create text labels for the table cell_text = []
for row in range (n_rows):
plt.plot(index, data[row], bar_width, color = colors[row])
y_offset = y_offset + data[row]
cell_text.append([ '%1.1f' % (x / 1000.0 ) for x in y_offset])
# Reverse colors and text labels to display table contents with # color. colors = colors[:: - 1 ]
cell_text.reverse() # Add a table at the bottom the_table = plt.table(cellText = cell_text,
rowLabels = rows,
rowColours = colors,
colLabels = columns,
loc = 'bottom' )
# make space for the table: plt.subplots_adjust(left = 0.2 , bottom = 0.2 )
plt.ylabel( "Price in Rs.{0}'s" . format (value_increment))
plt.yticks(values * value_increment, [ '%d' % val for val in values])
plt.xticks([]) plt.title( 'Cost price increase' )
# plt.show()-display graph # Create image. plt.savefig ignores figure edge and face color. fig = plt.gcf()
plt.savefig( 'pyplot-table-original.png' ,
bbox_inches = 'tight' ,
dpi = 150 )
|
Output:
Example 2: Let’s consider the rise in price of milk of different brands in past years
# importing necessary packagess import numpy as np
import matplotlib.pyplot as plt
# input data values data = [[ 322862 , 876296 , 45261 , 782372 , 32451 ],
[ 58230 , 113139 , 78045 , 99308 , 516044 ],
[ 89135 , 8552 , 15258 , 497981 , 603535 ],
[ 24415 , 73858 , 150656 , 19323 , 69638 ],
[ 139361 , 831509 , 43164 , 7380 , 52269 ]]
# preparing values for graph columns = ( 'Gokul' , 'Kwality' , 'Bakhri' , 'Arun' , 'Amul' )
rows = [ '%d months' % x for x in ( 50 , 35 , 20 , 10 , 5 )]
values = np.arange( 0 , 2500 , 500 )
value_increment = 1000
# Adding pastel shades to graph colors = plt.cm.Oranges(np.linspace( 22 , 3 , 12 ))
n_rows = len (data)
index = np.arange( len (columns)) + 0.3
bar_width = 0.4
# Initializing vertical-offset for the graph. y_offset = np.zeros( len (columns))
# Plot bars and create text labels for the table cell_text = []
for row in range (n_rows):
plt.bar(index, data[row], bar_width, bottom = y_offset, color = colors[row])
y_offset = y_offset + data[row]
cell_text.append([ '%1.1f' % (x / 1000.0 ) for x in y_offset])
# Reverse colors and text labels to display table contents with # color. colors = colors[:: - 1 ]
cell_text.reverse() # Add a table at the bottom the_table = plt.table(cellText = cell_text,
rowLabels = rows,
rowColours = colors,
colLabels = columns,
loc = 'bottom' )
# make space for the table: plt.subplots_adjust(left = 0.2 , bottom = 0.2 )
plt.ylabel( "Rise in Rs's" . format (value_increment))
plt.yticks(values * value_increment, [ '%d' % val for val in values])
plt.xticks([]) plt.title( 'Cost of Milk of diff. brands' )
# plt.show()-display graph # Create image. plt.savefig ignores figure edge and face color. fig = plt.gcf()
plt.savefig( 'pyplot-table-original.png' ,
bbox_inches = 'tight' ,
dpi = 150 )
|
Output: