Matplotlib是一個Python的2D繪圖庫,它以各類硬拷貝格式和跨平臺的交互式環境生成出版質量級別的圖形。經過Matplotlib,開發者能夠僅須要幾行代碼,即可以生成繪圖,折線圖、散點圖、柱狀圖、餅圖、直方圖、子圖等。Matplotlib使用NumPy進行數組運算,並調用一系列其餘的Python庫來實現硬件交互。html
環境:Python(3.5.2)、Jupyter(1.0.0) Ubuntu安裝Jupyter Notebook數組
1.折線圖dom
%matplotlib inline import matplotlib.pyplot as plt import numpy as np x = np.arange(9) y = np.sin(x) z = np.cos(x) # marker數據點樣式,linewidth線寬,linestyle線型樣式,color顏色 plt.plot(x, y, marker="*", linewidth=3, linestyle="--", color="orange") plt.plot(x, z) plt.title("matplotlib") plt.xlabel("height") plt.ylabel("width") # 設置圖例 plt.legend(["Y","Z"], loc="upper right") plt.grid(True) plt.show()
2.散點圖post
x = np.random.rand(10) y = np.random.rand(10) plt.scatter(x,y) plt.show()
3.柱狀圖spa
x = np.arange(10) y = np.random.randint(0,30,10) plt.bar(x, y) plt.show()
4.餅圖3d
x = np.random.randint(1, 10, 3) plt.pie(x) plt.show()
5.直方圖code
mean, sigma = 0, 1 x = mean + sigma * np.random.randn(10000) plt.hist(x,50) plt.show()
6.子圖orm
# figsize繪圖對象的寬度和高度,單位爲英寸,dpi繪圖對象的分辨率,即每英寸多少個像素,缺省值爲80 plt.figure(figsize=(8,6),dpi=100) # subplot(numRows, numCols, plotNum)
# 一個Figure對象能夠包含多個子圖Axes,subplot將整個繪圖區域等分爲numRows行*numCols列個子區域,按照從左到右,從上到下的順序對每一個子區域進行編號
# subplot在plotNum指定的區域中建立一個子圖Axes A = plt.subplot(2,2,1) plt.plot([0,1],[0,1], color="red") plt.subplot(2,2,2) plt.title("B") plt.plot([0,1],[0,1], color="green") plt.subplot(2,1,2) plt.title("C") plt.plot(np.arange(10), np.random.rand(10), color="orange") # 選擇子圖A plt.sca(A) plt.title("A") plt.show()
1.數字格式htm
%matplotlib inline import matplotlib.pyplot as plt import numpy as np from matplotlib.ticker import MultipleLocator, FormatStrFormatter x = np.arange(30) y = np.sin(x) plt.figure(figsize=(12,6)) plt.plot(x, y) # 設置X軸的刻度間隔 plt.gca().xaxis.set_major_locator(MultipleLocator(3)) # 設置X軸的刻度顯示格式 plt.gca().xaxis.set_major_formatter(FormatStrFormatter("%d-K")) # 自動旋轉X軸的刻度,適應座標軸 plt.gcf().autofmt_xdate() plt.show()
2.時間格式對象
%matplotlib inline import matplotlib.pyplot as plt import numpy as np import datetime from matplotlib.dates import DayLocator, DateFormatter x = [datetime.date.today() + datetime.timedelta(i) for i in range(30)] y = np.sin(np.arange(30)) plt.figure(figsize=(12,6)) plt.plot(x, y) # 設置X軸的時間間隔,MinuteLocator、HourLocator、DayLocator、WeekdayLocator、MonthLocator、YearLocator plt.gca().xaxis.set_major_locator(DayLocator(interval=3)) # 設置X軸的時間顯示格式 plt.gca().xaxis.set_major_formatter(DateFormatter('%y/%m/%d')) # 自動旋轉X軸的刻度,適應座標軸 plt.gcf().autofmt_xdate() plt.show()