how to do mathplotlib more appealing?
Check this video - to know how to improve your data visualisation using matplotlib.pyplot
https://www.youtube.com/watch?v=YapH1LPbe4Q
Here are some Matplotlib Instruction/Sample Code, I got from EDX- Python Programming for DS. Check that course for quick work-out on MATPLOTLIB
How to customise x-axis scale to log?
# Basic scatter plot, log scale
plt.scatter(players_ids, scores)
plt.xscale('log')
How to add Add axis labels?
# Strings
xlab = 'players'
ylab = 'Scores'
title = 'World Chess Tournament in 2007'
plt.xlabel(xlab)
plt.ylabel(ylab)
How to add a Graph title?
plt.title(title)
How to add x-axis labels?
# Add players labels
<span style="line-height:1.7;">plt.xticks([1, 2, 3],['Sam', 'Alex', '</span><span style="line-height:1.7;">Mac</span><span style="line-height:1.7;">'])</span>
How to display plot?
plt.show()
Here is a complete example on World Population Code that I copied from above tutorial that really impressed me.
# Import numpy as np
import numpy as np
# Store pop as a numpy array: np_pop
np_pop = np.array(pop)
<span style="color:#99cc00;"># Double np_pop ==> <strong>increase size of dots or points</strong>
np_pop = np_pop * 2</span>
<span style="color:#99cc00;"># Update: set s argument to np_pop
plt.scatter(gdp_cap, life_exp, s = np_pop)</span>
# Previous customizations
plt.xscale('log')
plt.xlabel('GDP per Capita [in USD]')
plt.ylabel('Life Expectancy [in years]')
plt.title('World Development in 2007')
plt.xticks([1000, 10000, 100000],['1k', '10k', '100k'])
# Display the plot
plt.show()
# For different colors points; s - refers to size ; c - color for each point[big-red;med-green;small-black];
<span style="color:#99cc00;"> plt.scatter(x = gdp_cap,
y = life_exp,
s = np.array(pop) * 2,
c=col, # sample col - ['red','blue','green','yellow',...]
alpha=0.8)</span>
Note: len(col) should be equal to len(x) ==> each point specify your colour. My recommendation would be like take a max function over y.
<span style="color:#99cc00;">def sams_points_color_recommendatiaon_engine(x,y):
y_max = max(y)
y_min = min(y)
# setting a bar at 1/3 & 2/3 in y - spread
y_avg1 = y_min + (y_max - y_min) * 0.33
y_avg2 = y_min + (y_max - y_min) * 0.66
#
cols = []
for x, y in zip(x,y):
if y < y_avg1 : cols.append(‘red’)
elif y < y_avg2 : cols.append(‘yellow’)
else: cols.append(‘green’)
return cols
</span>
Key Points:
-
Add
plt.grid(True)
after theplt.text()
calls so that gridlines are drawn on the plot -
The strings
xlab
andylab
are already set for you. Use these variables to set the label of the x- and y-axis. -
The string
title
is also coded for you. Use it to add a title to the plot. -
After these customizations, finish the script with
plt.show()
to actually display the plot. -
Use
tick_val
andtick_lab
as inputs to thexticks()
function to make the the plot more readable. -
Display the plot with
plt.show()
after you’ve added the customisations. -
Change the opacity of the bubbles by setting the
alpha
argument to0.8
insideplt.scatter()
. Alpha can be set from zero to one, where zero totally transparant, and one is not transparant. -
Add
plt.grid(True)
after theplt.text()
calls so that gridlines are drawn on the plot.