Python日記(3)——matplotlib基礎入門(1)
每天做一個Python小練習,順便記錄一些小技巧,
由于化工實驗資料處理需要把資料轉換成圖示,所以要逐步學習Python里比較好用的matplotlib庫,加下來就是從0基礎開始學習的程序,
(1)簡明matplotlib
在使用matplotlib庫之前,先添加進該庫和另一個常用的庫Numpy,
在Pycharm下有個Python Packages方便我們下載需要的庫,示意圖如下:
添加好需要的兩個庫之后,就可以匯入使用了,
import matplotlib.pyplot as plt
import numpy as np
這里匯入的時候,使用了簡化名,為了方便以后使用,
接下來,就可以嘗試生成一個簡單的圖形,
import matplotlib.pyplot as plt
import numpy as np
data = np.arange(10)
plt.plot(data)
plt.show()
創建好實體后,務必在最后寫上show(),才能展示你所要創建的圖片,
就會得到以下的圖形:
(2)圖板與子圖
繪圖前,得先準備好一個圖板或者畫布,才能把自己需要的圖繪畫出來,所以我們的可以使用figure()函式,創建并定義出一個我們需要用到的圖板,
fig = plt.figure()
創建出來的圖板還只是一個空圖板,并沒有我們可以用的上的作業區,所以還需要使用add_subplot()創建一個或多個子圖(subplot)
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
上面代碼的意思時,該圖片一個是2*2的作業區里的第n個,最多只能創建四個,
得到圖片如下:
ps:更為方便的用法如下:
fig, axes = plt.subplots(nrows=2, ncols=2)
axes[0,0].set(title='Upper Left')
axes[0,1].set(title='Upper Right')
axes[1,0].set(title='Lower Left')
axes[1,1].set(title='Lower Right')
當你輸入繪圖命令plt.plot(np.random.rand(50).cumsum(), 'k--') plt.plot([1.5, 3.5, -2, 1.6])
matplotlib會默認在最后一個圖板或者圖板上進行繪制,從而隱藏圖片和子圖的創建,圖片如下
使用子圖網路創建圖片是非常常見的任務,所以matplotlib包含了一種便捷方法plt.subplots
, 它創建一個新的圖片,然后回傳包含了一個已生成子圖物件的NumPy陣列,
fig, axes = plt.subplots(2, 3)
這種方法非常實用,因為陣列axes可以像二維陣列那樣方便地進行索引,例如,axes[0, 1]
,你也可以通過使用sharex
和sharey
來表明所有子圖共享一個x軸和y軸,這在使用相同的比例進行資料對比時,這種方法會十分有效,
調整子圖周圍的間距
默認情況下,matplotlib會在子圖的外部和子圖之間留出一定的間距,這個間距都是相對于高度和寬度來指定的,所以如果你通過編程或手動GUI視窗來調整圖的大小,那么圖就會自動調整,你可以使用圖物件上的subplots_adjust
方法更改間距,也可以用作頂層函式:
subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
wspace
和hspace
分別控制的是圖片的寬度和高度百分比嗎,以用作子圖間的間距,下面是個小例子,我將這個間距一直縮小到零,
fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)
for i in range(2):
for j in range(2):
axes[i, j].hist(np.random.randn(500), bins=50, color='k', alpha=0.5)
plt.subplots_adjust(wspace=0, hspace=0)
plt.show()
輸出沒有內部子圖間隔的影像如下:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/438655.html
標籤:AI