Python繪圖之matplotlib基本語法


  博客地址:http://www.cnblogs.com/yudanqu/
 
  Matplotlib 是一個 Python 的 2D繪圖庫,通過 Matplotlib,開發者可以僅需要幾行代碼,便可以生成繪圖,直方圖,功率譜,條形圖,錯誤圖,散點圖等。當然他也是可以畫出3D圖形的,這時就需要安裝更多的擴展。相比MATLAB來說,python不需要那么大的安裝包,而且最重要的是開源的,在這方面python還是有一定的優勢的。
 
下面我將簡單梳理一下matplotlib畫圖的方法,首先把本次需要用到的包導入進來:
1 import numpy as np
2 import pandas as pd
3 import matplotlib.pyplot as plt
4 from pandas import Series,DataFrame

當然,在真正做事情時要根據自己的要求來導入,這里為了示例要導入numpy和pandas。

1、一個簡單案例來展示畫圖的基本命令

 1 x = np.linspace(0,2*np.pi,100) # 設置橫軸變量,從0到2*pi,均分為100份
 2 y = np.sin(x) # 因變量取值
 3 
 4 plt.plot(x,y,'b*',label='aaa') # 'b*'表示藍色*狀線,label是指定義圖例
 5 plt.plot(x*2,y,'r--',label='bbb') # 'r--'表示紅色虛線,
 6 plt.xlabel('this is x') # 設置橫軸標簽
 7 plt.ylabel('this is y') # 設置縱軸標簽
 8 plt.title('this is title') # 設置標題
 9 plt.legend() # 顯示上面定義的圖例
10 plt.show() # 展示圖像

這樣一個簡單的繪圖就出來了,這里面有兩個圖形,位於一塊畫布上,還介紹了一些標簽的設置。

2、子圖

 1 plt.subplot(2,1,1) # 子圖,(2,1,1)代表,創建2*1的畫布,並且定位於畫布1 ;等效於plt.subplot(211),即去掉逗號
 2 
 3 a = plt.subplots() # 返回兩個對象 figure ax
 4 figure,ax = plt.subplots()
 5 ax.plot([1,2,3,4,5])
 6 plt.show() # 顯示圖像
 7 
 8 # subplots可以傳入參數,幾行幾列
 9 figure,ax = plt.subplots(2,2)
10 # figure 顯示畫布,分成2*2的
11 ax[0][0].plot(x,y)
12 ax[0][1].plot(x*2,y*2) # 可以分別繪圖

3、pandas--Series繪圖

先介紹幾個常用的參數:

  • plot參數:kind:圖像顯示的方法,包括'line''bar''barh''hist''box''kde''density''area''pie'.
  • grid=True 表示顯示背景的網格
  • label='str',參數里寫這個,輸出圖像之前要協一個plt.legend(),顯示圖例
  • title='str',顯示標題
  • style='--',顯示為虛線

plt.legend() # 顯示圖例,這個上面提到過,沒有這個,設置了圖例也是不會顯示出來的

1 # 這是一個小栗子
2 s1 = Series(np.random.randint(1000).cumsum()) # 創建series,cumsum()是指疊加求和,本位數是前幾項之和
3 s1.plot() # series有自己的plot函數,里面可以寫入想要的參數

4、pandas--DataFrame繪圖

1 df = DataFrame(
2     np.random.randint(1,10,40).reshape(10,4),
3     columns=['A','B','C','D']
4     )
5 df.plot() # dataframe也有自己的plot,按列畫出來,參數包含ax,選擇輸出的畫布
6 # 參數:stacked=True,表示一個堆疊的情況,同一個index下,columns一不同顏色疊在一起

1、可以取其一行或幾行來畫圖,即將dataftame橫過來畫:
一行:df.iloc[5].plot() # iloc是pandas里面的一個可以說是切片的命令
多行或全部:for i in df.index:
        df.iloc[i].plot(label=str[i])
        plt.legend()
2、對列畫圖:
df['A'].plot()

3、對行繪圖還有簡便方法:
就是對df進行轉置,然后再plot ,df.T.plot()

5、直方圖和密度圖

1 # 直方圖
2 s = Series(np.random.randn(1000))
3 plt.hist(s,rwidth=0.9) # 直方圖,rwidth為設置寬度
4 plt.show()
5 # hist()的參數:rwidth為寬度;bins=20表示顯示的區間,默認是10份;color='r'設置顏色;
1 # 密度圖
2 s.plot(kind='kde') # kind='kde'即表示密度圖

 

  今天就大概先總結這些,博主也是初學者,如有不足,請多多指教,希望可以給一些朋友帶來幫助,如若覺得我說的太少了,可以查看官方文檔https://matplotlib.org/。

 

  作者:漁單渠

  博客地址:http://www.cnblogs.com/yudanqu/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM