cp1_FirstSteps_p5
February 19, 2019
https://github.com/PacktPublishing/Matplotlib-3.0-Cookbook
In [1]: import matplotlib.pyplot as plt
In [2]: X = range(100)
list(X)[:5]
Out[2]: [0, 1, 2, 3, 4]
In [3]: Y=[value **2 for value in X]
Y[:5]
Out[3]: [0, 1, 4, 9, 16]
In [15]: plt.plot(X,Y)
Out[15]:
[<matplotlib.lines.Line2D at 0x5219b00>]
In [13]: plt.plot(X,Y)
plt.show()
Out[13]:
In [1]: import math
import matplotlib.pyplot as plt
In [24]: TList = range(100) #$(the range() built-in function can only generate integer values)
list(TList)[:5]
Out[24]: [0, 1, 2, 3, 4]
In [21]: XList = [ (2*math.pi)*r/len(TList) for r in TList ] #x goes from 0 to 2*pi
XList[:5]
Out[21]: [0.0, 0.06283185307179587, 0.12566370614359174,
0.18849555921538758, 0.25132741228718347]
In [22]: YList = [math.sin(x) for x in X]
YList[:5]
Out[22]: [0.0, 0.0634239196565645, 0.12659245357374926,
0.18925124436041021, 0.2511479871810792]
In [23]: plt.plot(XList,YList)
plt.show()
In [14]: import numpy as np
import matplotlib.pyplot as plt
In [26]: #the X list is now a one-dimensional NumPy array with 100 evenly spaced values between 0 and 2 pi
X = np.linspace(0,2*np.pi, 100) # compare to XList = [ (2*math.pi)*r/len(TList) for r in TList ]
X[:5]
Out[26]: array([0. , 0.06346652, 0.12693304, 0.19039955, 0.25386607])
In [27]: Y = np.sin(X)
len(Y)
Out[27]: 100
In [28]: plt.plot(X,Y)
plt.show()
In [29]: import numpy as np
import matplotlib.pyplot as plt
In [30]: XList = np.linspace(-3,2,200)
YList = XList**2 - 2*XList +1 #ploting Y= X^2 - 2X -1
In [31]: plt.plot(XList, YList)
plt.show()
In [ ]:
In [32]: import numpy as np
import matplotlib.pyplot as plt
In [33]: XList = np.linspace(0,2*np.pi, 100)
In [34]: Y_SinX = np.sin(XList)
Y_CosX = np.cos(XList)
In [36]: plt.plot(XList,Y_SinX)
plt.plot(XList,Y_CosX)
plt.show()
In [ ]:
In [37]: import numpy as np
import matplotlib.pyplot as plt
In [38]: def plot_slope(X,Y):
Xs = X[1:] - X[:-1] #X[:-1] excludes the last element
Ys = Y[1:] - Y[:-1]
plt.plot(X[1:], Ys/Xs)
In [42]: X= np.linspace(-3,3,100)
X[1:]-X[:-1]
Out[42]:
array([0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606, 0.06060606])
In [43]: Y = np.exp(-X ** 2) # Y=e^(X ** 2)
Y
Out[43]: array([1.23409804e-04, 1.76880405e-04, 2.51663004e-04, 3.55441898e-04, 4.98341956e-04, 6.93578905e-04, 9.58239105e-04, 1.31420010e-03, 1.78919918e-03, 2.41805111e-03, 3.24400753e-03, 4.32023947e-03, 5.71141054e-03, 7.49529149e-03, 9.76434838e-03, 1.26272156e-02, 1.62099440e-02, 2.06568943e-02, 2.61311262e-02, 3.28141244e-02, 4.09046897e-02, 5.06168338e-02, 6.21765240e-02, 7.58171567e-02, 9.17736782e-02, 1.10275332e-01, 1.31537081e-01, 1.55749843e-01, 1.83069765e-01, 2.13606872e-01, 2.47413509e-01, 2.84473089e-01, 3.24689734e-01, 3.67879441e-01, 4.13763397e-01, 4.61964082e-01, 5.12004693e-01, 5.63312339e-01, 6.15225287e-01, 6.67004372e-01, 7.17848463e-01, 7.66913636e-01, 8.13335512e-01, 8.56253976e-01, 8.94839317e-01, 9.28318712e-01, 9.56001871e-01, 9.77304662e-01, 9.91769594e-01, 9.99082148e-01, 9.99082148e-01, 9.91769594e-01, 9.77304662e-01, 9.56001871e-01, 9.28318712e-01, 8.94839317e-01, 8.56253976e-01, 8.13335512e-01, 7.66913636e-01, 7.17848463e-01, 6.67004372e-01, 6.15225287e-01, 5.63312339e-01, 5.12004693e-01, 4.61964082e-01, 4.13763397e-01, 3.67879441e-01, 3.24689734e-01, 2.84473089e-01, 2.47413509e-01, 2.13606872e-01, 1.83069765e-01, 1.55749843e-01, 1.31537081e-01, 1.10275332e-01, 9.17736782e-02, 7.58171567e-02, 6.21765240e-02, 5.06168338e-02, 4.09046897e-02, 3.28141244e-02, 2.61311262e-02, 2.06568943e-02, 1.62099440e-02, 1.26272156e-02, 9.76434838e-03, 7.49529149e-03, 5.71141054e-03, 4.32023947e-03, 3.24400753e-03, 2.41805111e-03, 1.78919918e-03, 1.31420010e-03, 9.58239105e-04, 6.93578905e-04, 4.98341956e-04, 3.55441898e-04, 2.51663004e-04, 1.76880405e-04, 1.23409804e-04])
In [45]: Ys = Y[1:] - Y[:-1]
Ys
Out[45]: array([ 5.34706011e-05, 7.47825989e-05, 1.03778894e-04, 1.42900058e-04, 1.95236950e-04, 2.64660200e-04, 3.55960993e-04, 4.74999083e-04, 6.28851932e-04, 8.25956416e-04, 1.07623195e-03, 1.39117107e-03, 1.78388095e-03, 2.26905689e-03, 2.86286722e-03, 3.58272845e-03, 4.44695022e-03, 5.47423197e-03, 6.68299814e-03, 8.09056531e-03, 9.71214410e-03, 1.15596902e-02, 1.36406327e-02, 1.59565215e-02, 1.85016537e-02, 2.12617490e-02, 2.42127616e-02, 2.73199222e-02, 3.05371077e-02, 3.38066370e-02, 3.70595795e-02, 4.02166456e-02, 4.31897067e-02, 4.58839558e-02, 4.82006848e-02, 5.00406114e-02, 5.13076458e-02, 5.19129476e-02, 5.17790858e-02, 5.08440909e-02, 4.90651728e-02, 4.64218762e-02, 4.29184635e-02, 3.85853410e-02, 3.34793954e-02, 2.76831590e-02, 2.13027910e-02, 1.44649318e-02, 7.31255386e-03, 0.00000000e+00, -7.31255386e-03, -1.44649318e-02, -2.13027910e-02, -2.76831590e-02, -3.34793954e-02, -3.85853410e-02, -4.29184635e-02, -4.64218762e-02, -4.90651728e-02, -5.08440909e-02, -5.17790858e-02, -5.19129476e-02, -5.13076458e-02, -5.00406114e-02, -4.82006848e-02, -4.58839558e-02, -4.31897067e-02, -4.02166456e-02, -3.70595795e-02, -3.38066370e-02, -3.05371077e-02, -2.73199222e-02, -2.42127616e-02, -2.12617490e-02, -1.85016537e-02, -1.59565215e-02, -1.36406327e-02, -1.15596902e-02, -9.71214410e-03, -8.09056531e-03, -6.68299814e-03, -5.47423197e-03, -4.44695022e-03, -3.58272845e-03, -2.86286722e-03, -2.26905689e-03, -1.78388095e-03, -1.39117107e-03, -1.07623195e-03, -8.25956416e-04, -6.28851932e-04, -4.74999083e-04, -3.55960993e-04, -2.64660200e-04, -1.95236950e-04, -1.42900058e-04, -1.03778894e-04, -7.47825989e-05, -5.34706011e-05])
In [46]: Ys/(X[1:]-X[:-1])
Out[46]: array([ 0.00088226, 0.00123391, 0.00171235, 0.00235785, 0.00322141, 0.00436689, 0.00587336, 0.00783748, 0.01037606, 0.01362828, 0.01775783, 0.02295432, 0.02943404, 0.03743944, 0.04723731, 0.05911502, 0.07337468, 0.09032483, 0.11026947, 0.13349433, 0.16025038, 0.19073489, 0.22507044, 0.26328261, 0.30527729, 0.35081886, 0.39951057, 0.45077872, 0.50386228, 0.55780951, 0.61148306, 0.66357465, 0.71263016, 0.75708527, 0.7953113 , 0.82567009, 0.84657616, 0.85656364, 0.85435492, 0.8389275 , 0.80957535, 0.76596096, 0.70815465, 0.63665813, 0.55241002, 0.45677212, 0.35149605, 0.23867137, 0.12065714, 0. , -0.12065714, -0.23867137, -0.35149605, -0.45677212, -0.55241002, -0.63665813, -0.70815465, -0.76596096, -0.80957535, -0.8389275 , -0.85435492, -0.85656364, -0.84657616, -0.82567009, -0.7953113 , -0.75708527, -0.71263016, -0.66357465, -0.61148306, -0.55780951, -0.50386228, -0.45077872, -0.39951057, -0.35081886, -0.30527729, -0.26328261, -0.22507044, -0.19073489, -0.16025038, -0.13349433, -0.11026947, -0.09032483, -0.07337468, -0.05911502, -0.04723731, -0.03743944, -0.02943404, -0.02295432, -0.01775783, -0.01362828, -0.01037606, -0.00783748, -0.00587336, -0.00436689, -0.00322141, -0.00235785, -0.00171235, -0.00123391, -0.00088226])
In [48]: plt.plot(X,Y)
plot_slope(X,Y)
plt.show()
##################################
my_data.txt
0 0
1 1
2 4
3 9
4 16
5 25
6 36
##################################
In [49]: import matplotlib.pyplot as plt
In [54]: XList, YList=[], []
for line in open('my_data.txt', 'r'):
values =[float(v) for v in line.split()]
XList.append(values[0]) #x-axis
YList.append(values[1]) #y-axis
In [55]: plt.plot(XList, YList)
plt.show()
In [56]: import matplotlib.pyplot as plt
In [57]: with open('my_data.txt', 'r') as f:
X, Y = zip( *[
[float(s) for s in line.split()] for line in f
] ) #2D-list, each element is a list in this 2D-list
In [58]: plt.plot(X,Y)
plt.show()
In [59]: import matplotlib.pyplot as plt
import numpy as np
In [60]: data = np.loadtxt('my_data.txt') #return 2D array or called full-blown matrices
In [61]: plt.plot(data[:,0], data[:,1]) #0-->columnIndex-->X- axis, 1-->columnIndex --> Y-axis
plt.show()
##################################
'my_data.txt'
0 0 6
1 1 5
2 4 4
4 16 3
5 25 2
6 36 1
##################################
In [62]: import numpy as np
import matplotlib.pyplot as plt
In [63]: data = np.loadtxt('my_data.txt')
data.T
Out[63]: array([[ 0., 1., 2., 4., 5., 6.],
[ 0., 1., 4., 16., 25., 36.],
[ 6., 5., 4., 3., 2., 1.]])
In [67]: for columnList in data.T[1:]:
plt.plot(data[:,0], columnList) # the len(columnList) == the number of curves
plt.show()
In [68]: data
Out[68]: array([[ 0., 0., 6.], [ 1., 1., 5.], [ 2., 4., 4.], [ 4., 16., 3.], [ 5., 25., 2.], [ 6., 36., 1.]])
In [ ]:
In [69]: import numpy as np
import matplotlib.pyplot as plt
In [70]: data = np.random.rand(1024,2) #[0,1] interval, (row,column):(1024,2)
In [71]: plt.scatter(data[:,0], data[:,1])
plt.show()
In [73]: data.shape
Out[73]: (1024, 2)
In [ ]:
In [74]: import numpy as np
import matplotlib.pyplot as plt
In [75]: data = [5., 25., 50, 20]
In [79]: plt.bar( range(len(data)), data )
plt.show()
In [80]: range(len(data))
Out[80]: range(0, 4)
In [81]: plt.barh( range(len(data)), data)
plt.show()
In [ ]:
In [82]: import matplotlib.pyplot as plt
In [83]: data = [5,25,50,20]
In [84]: plt.bar( range(len(data)), data, width=1)
plt.show()
In [87]: plt.barh( range(len(data)), data, height=1)
plt.show()
In [89]:
In [ ]:
17
In [90]: import numpy as np
import matplotlib.pyplot as plt
In [96]: data = [ [5,25,50,20], [4,23,51,17], [6,22,52,19] ]
XList = np.arange(4)
In [97]: w=0.25
plt.bar(XList+w*0, data[0], color='b', width=w) # center the first blue bar to 0.0
plt.bar(XList+w*1, data[1], color='g', width=w) #width=w is the gap
plt.bar(XList+w*2, data[2], color='r', width=w) # center the first red bard to 0.5
plt.show()
In [ ]:
In [99]: import numpy as np
import matplotlib.pyplot as plt
In [100]: data = [[5,25,50,20], [4,23,51,17], [6,22,52,19]]
color_list=['b','g','r']
gap = .8/len(data)
In [101]: for i, row in enumerate(data): #the iterator enumerate returns both the current row and its i
X = np.arange(len(row))
plt.bar(X+i*gap, row, width=gap, color = color_list[ i%len(color_list) ]) #i%len(color_list) if len(data)>3
plt.show()
In [ ]:
In [102]: import matplotlib.pyplot as plt
In [106]: A = [5,30,45,22] B = [5,25,50,20]
XList= range(len(A))
In [107]: plt.bar(XList, A, color='b')
plt.bar(XList, B, color='r', bottom=A) #default width: 0.8 plt.show()
In [ ]:
In [108]: import numpy as np
import matplotlib.pyplot as plt
In [109]: A = np.array([5,30,45,22])
B = np.array([5,20,50,20])
C = np.array([1,2,1,1])
xList=np.arange(4)
In [110]: plt.bar(xList, A, color='b')
plt.bar(xList, B, color='y', bottom=A)
plt.bar(xList, C, color='r', bottom=A+B)
plt.show()
20
In [ ]:
In [111]: import numpy as np
import matplotlib.pyplot as plt
In [112]: data=np.array([ [5,30,45,22], [5,20,50,20], [1, 2, 1, 1] ])
colorList = ['b', 'y','r']
xList = np.arange(data.shape[1]) #data.shape[1] return the number of columns
for i in range(data.shape[0]): #axis=0 to remove row: sum by column
plt.bar(xList, data[i], bottom=np.sum(data[:i], axis=0), color=color_list[ i%len(color_lis
plt.show()
21
In [ ]:
In [113]: import numpy as np
import matplotlib.pyplot as plt
In [115]: women_pop = np.array([5,30,45,22])
men_pop = np.array([5,25,50,20])
xList= np.arange(4)
In [116]: plt.barh(xList, women_pop, color='r')
plt.barh(xList, -men_pop, color='b')
plt.show()
In [ ]:
In [117]: import matplotlib.pyplot as plt
In [118]: data = [5,25,50,20]
plt.pie(data)
plt.show()
23
In [ ]:
In [119]: import numpy as np
import matplotlib.pyplot as plt
In [120]: xList = np.random.randn(1000)
In [121]: plt.hist(xList, bins=20)
plt.show()
In [122]: plt.hist(xList, bins=50)
plt.show()
In [ ]:
In [123]: import numpy as np
import matplotlib.pyplot as plt
In [124]: data = np.random.randn(100)
In [125]: plt.boxplot(data) #The red bar is the median of the distribution.
plt.show()
25
In [126]: import numpy as np
import matplotlib.pyplot as plt
In [127]: data = np.random.randn(100,5)
In [128]: plt.boxplot(data)
plt.show()
26
In [ ]:
In [130]: import numpy as np
import matplotlib.pyplot as plt
import matplotlib.tri as tri
In [131]: data = np.random.rand(100,2)
triangles= tri.Triangulation(data[:,0], data[:,1])
In [132]: plt.triplot(triangles)
plt.show()