matplotlib官方例程實驗 一
阿新 • • 發佈:2018-12-30
# sphinx_gallery_thumbnail_number = 3 import matplotlib.pyplot as plt import numpy as np #實驗一 空白圖 #最簡單的figure建立方式,空白figure if 0: fig = plt.figure() #定義居中標題 fig.suptitle('No axes on this figure') plt.show() #實驗二 繪製多條曲線 #產生從0到2均勻分佈的100個浮點nparray if 0: x = np.linspace(0, 2, 100) plt.plot(x, x, label='linear') plt.plot(x, x**2, label='quadratic') plt.plot(x, x**3, label='cubic') #設定x軸,y軸標籤 plt.xlabel('x label') plt.ylabel('y label') #圖表標題和曲線說明 plt.title("Simple Plot") plt.legend() plt.show() #實驗三 多張圖 #重畫一張figure,有2*2四張圖表 if 0: fig, ax = plt.subplots(2, 2) #產生4組滿足正態分佈的100長度的陣列 data1, data2, data3, data4 = np.random.randn(4, 100) #第一行第一列繪製散點正態分佈圖,標記用x形 #第二行第一列繪製散點正態分佈圖,標記用o形 ax[0][0].plot(data1, data2, marker='x') ax[1][0].plot(data1, data2, marker='o') #第一行第二列繪製sin曲線圖 x = np.arange(0, 10, 0.2) y = np.sin(x) ax[0][1].plot(x, y) #第二行第二列繪製紅色圓點的折線 ax[1][1].plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro') #橫座標0~6,縱座標0~20 plt.axis([0, 6, 0, 20]) plt.show() #實驗四 散點圖 if 0: data = {'a': np.arange(50), #0~50共計50個整數 'c': np.random.randint(0, 50, 50), #50個0~50的隨機數 'd': np.random.randn(50)} #50個正態分佈的數值 data['b'] = data['a'] + 10 * np.random.randn(50) data['d'] = np.abs(data['d']) * 100 #資料來源是字典data,目錄a為橫座標,b為縱座標,c為顏色,s為大小 plt.scatter('a', 'b', c='c', s='d', data=data) plt.xlabel('entry a') plt.ylabel('entry b') plt.show() #實驗五 同一組xy陣列繪製不同型別圖 if 0: names = ['group_a', 'group_b', 'group_c'] values = [1, 10, 100] plt.figure(1, figsize=(9, 3)) plt.subplot(131) plt.bar(names, values) plt.subplot(132) plt.scatter(names, values) plt.subplot(133) plt.plot(names, values) plt.suptitle('Categorical Plotting') plt.show() #實驗六 查詢圖表可設定的屬性 if 0: lines = plt.plot([1, 2, 3]) print(plt.setp(lines)) plt.show() #plt.clf() #刪除figure #plt.cla() #刪除axes #plt.close() #刪除影象包括記憶體 #實驗七 新增文字 if 0: mu, sigma = 100, 15 x = mu + sigma * np.random.randn(10000) #facecolor方塊顏色,alpha透明度 n, bins, patches = plt.hist(x, 50, density=1, facecolor='g', alpha=0.75) plt.xlabel('Smarts') plt.ylabel('Probability') plt.title('Histogram of IQ') #在(60,0.25)座標位置插入μ=100,σ=15 plt.text(60, .025, r'$\mu=100,\ \sigma=15$',fontsize=14, color='red') plt.axis([40, 160, 0, 0.03]) #顯示格點 plt.grid(True) plt.show() #實驗八 繪製標註 if 0: ax = plt.subplot(111) t = np.arange(0.0, 5.0, 0.01) s = np.cos(2*np.pi*t) line, = plt.plot(t, s, lw=2) #xy表示要做標註的點,xytext表示標註的位置 plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5), arrowprops=dict(facecolor='black', shrink=0.05), ) plt.ylim(-2, 2) plt.show() #實驗九 對數座標系 if 0: from matplotlib.ticker import NullFormatter # useful for `logit` scale # Fixing random state for reproducibility np.random.seed(19680801) # make up some data in the interval ]0, 1[ y = np.random.normal(loc=0.5, scale=0.4, size=1000) y = y[(y > 0) & (y < 1)] y.sort() x = np.arange(len(y)) # plot with various axes scales plt.figure(1) # linear plt.subplot(221) plt.plot(x, y) plt.yscale('linear') plt.title('linear') plt.grid(True) # log plt.subplot(222) plt.plot(x, y) plt.yscale('log') plt.title('log') plt.grid(True) # symmetric log plt.subplot(223) plt.plot(x, y - y.mean()) plt.yscale('symlog', linthreshy=0.01) plt.title('symlog') plt.grid(True) # logit plt.subplot(224) plt.plot(x, y) plt.yscale('logit') plt.title('logit') plt.grid(True) # Format the minor tick labels of the y-axis into empty strings with # `NullFormatter`, to avoid cumbering the axis with too many labels. plt.gca().yaxis.set_minor_formatter(NullFormatter()) # Adjust the subplot layout, because the logit one may take more space # than usual, due to y-tick labels like "1 - 10^{-3}" plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.25, wspace=0.35) plt.show()