環境:
Windows10
python3.6.4
numpy1.14.1
matplotlib2.1.2
工具:Cmder
目錄:
1.線性圖
2.散點圖
3.餅狀圖
4.條形圖
5.直方圖
例1:一條簡單的線性直線
import matplotlib.pyplot as plt import numpy as np data = np.arange(100, 201) ##可以嘗試改下范圍值看看圖片有什么變話 plt.plot(data) plt.show()
注:
1.通過np.arange(100, 201)生成一個[100, 200]之間的整數數組,它的值是:[100, 101, 102, … , 200]
2.通過matplotlib.pyplot將其繪制出來。
很顯然,繪制出來的值對應了圖中的縱坐標(y軸)。
而matplotlib本身為我們設置了圖形的橫坐標(x軸):[0, 100],因為我們剛好有100個數值
3.通過plt.show()將這個圖形顯示出來
例2:一次畫多個直線
import matplotlib.pyplot as plt import numpy as np data = np.arange(100, 201) plt.plot(data) data2 = np.arange(200, 301) plt.figure() plt.plot(data2) plt.show()
例2~:畫在同一個畫板中
import matplotlib.pyplot as plt import numpy as np data = np.arange(100, 201) plt.subplot(2, 1, 1) plt.plot(data) data2 = np.arange(200, 301) plt.subplot(2, 1, 2) plt.plot(data2) plt.show()
plt.subplot(2, 1, 1) Return a subplot axes at the given grid position.
創建一個2行1列的圖片,並在第一個位置【第1行第1列】中准備創建一個圖
例3:線型圖【比起例1來說,我們x,y都是已有的】
import matplotlib.pyplot as plt plt.plot([1, 2, 3], [3, 6, 9], '-r') plt.plot([1, 2, 3], [2, 4, 9], ':g') plt.show()
1.plot函數的第一個數組是橫軸的值,第二個數組是縱軸的值,所以它們一個是直線,一個是折線;
2.最后一個參數是由兩個字符構成的,分別是線條的樣式和顏色。
前者是紅色的直線,后者是綠色的點線。
注:API:matplotlib.pyplot.plot 文檔
例4:散點圖【借助於scatter函數繪制散點】
import matplotlib.pyplot as plt import numpy as np N = 20 ##plt.scatter(x,y,color顏色,size大小,alpha透明度) plt.scatter(np.random.rand(N) * 100, np.random.rand(N) * 100, c='r', s=100, alpha=0.5) plt.scatter(np.random.rand(N) * 100, np.random.rand(N) * 100, c='g', s=200, alpha=0.5) plt.scatter(np.random.rand(N) * 100, np.random.rand(N) * 100, c='b', s=300, alpha=0.5) plt.show()
注:
1.這幅圖包含了三組數據,每組數據都包含了20個隨機坐標的位置
2.參數c表示點的顏色,s是點的大小,alpha是透明度
注:API:matplotlib.pyplot.scatter 文檔
例5:餅狀圖【pie函數可用於繪制餅狀圖】
import matplotlib.pyplot as plt import numpy as np labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] data = np.random.rand(7) * 100 plt.pie(data, labels=labels, autopct='%1.1f%%') plt.axis('equal') plt.legend() plt.show()
注:
1.data是一組包含7個數據的隨機數值
2.圖中的標簽通過labels來指定
3.autopct指定了數值的精度格式
4.plt.axis('equal')設置了坐標軸大小一致
5.plt.legend()指明要繪制圖例(見下圖的右上角)
注:API:matplotlib.pyplot.pie 文檔
例6:條形圖【bar函數可用於繪制條形圖】
import matplotlib.pyplot as plt import numpy as np N = 7 x = np.arange(N) data = np.random.randint(low=0, high=100, size=N) colors = np.random.rand(N * 3).reshape(N, -1) labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] plt.title("Weekday Data") plt.bar(x, data, alpha=0.8, color=colors, tick_label=labels) plt.show()
注:
1.這幅圖展示了一組包含7個隨機數值的結果,每個數值是[0, 100]的隨機數
2.它們的顏色也是通過隨機數生成的。
np.random.rand(N * 3).reshape(N, -1)表示先生成21(N x 3)個隨機數,然后將它們組裝成7行,那么每行就是三個數,這對應了顏色的三個組成部分RGB。
3.title指定了圖形的標題,labels指定了標簽,alpha是透明度
注:API:matplotlib.pyplot.bar 文檔
例7:直方圖【hist函數可用於繪制直方圖】
import matplotlib.pyplot as plt import numpy as np data = [np.random.randint(0, n, n) for n in [3000, 4000, 5000]] labels = ['3K', '4K', '5K'] bins = [0, 100, 500, 1000, 2000, 3000, 4000, 5000] plt.hist(data, bins=bins, label=labels) plt.legend() plt.show()
注:
[np.random.randint(0, n, n) for n in [3000, 4000, 5000]]生成了包含了三個數組的數組,這其中:
第一個數組包含了3000個隨機數,這些隨機數的范圍是 [0, 3000)
第二個數組包含了4000個隨機數,這些隨機數的范圍是 [0, 4000)
第三個數組包含了5000個隨機數,這些隨機數的范圍是 [0, 5000)
bins數組用來指定我們顯示的直方圖的邊界,即:
[0, 100) 會有一個數據點,
[100, 500)會有一個數據點,以此類推。所以最終結果一共會顯示7個數據點。
注:API:matplotlib.pyplot.hist 文檔