Python-Matplotlib繪製圖形

在這裏插入圖片描述

  1. 頻數分析
    a. 定性分析:柱狀圖、餅形圖
    i. 柱狀圖:柱的高度代表某種類型的頻數
    ii. 餅狀圖:面積代表某種類型的頻數
    b. 定量分析:直方圖、分佈曲線
    i. 直方圖:將定量數據劃分爲若干連續區間,在這些連續的區間上繪製柱(類似柱狀圖)
    ii. 分佈曲線:對應數據的分佈函數
  2. 關係分析:散點圖
    a. 散點圖:分別以自變量和因變量作爲橫縱座標,當自變量與因變量線性相關時,在散點圖中,點近似分佈在一條直線上
  3. 探索分析:箱型圖
    a. 箱型圖:瞭解數據的中心位置,發散程度以及偏差程度
    i. Q2所指的紅線爲中位數
    ii. Q1所指的藍框下側爲下四分位數,Q3所指的藍框上側爲上四分位數,Q3-Q1爲四分爲差。四分位差也是衡量數據的發散程度的指標之一
    iii. 上界線和下界線是距離中位數1.5倍四分位差的線,高於上界線或者低於下界線的數據爲異常值。

在這裏插入圖片描述
一、Why’s Matplotlib
Matplotlib:風格類似於Matlab,是基於Python的繪圖庫,屬於Python中最基礎的畫圖工具。他提供了一整套與matlab相似的命令API,十分適合交互式繪圖。
除了Matplotlib外,還有幾個較常用的繪圖庫:

  • Seaborn
    Seaborn是基於Matplotlib的高級可視化效果庫,偏向於統計作圖,可用於數據挖掘和機器學習中的變量特徵選取。相對Matplotlib,其語法相對簡單,但繪圖方式較爲侷限。

  • Bokeh
    Bokeh是基於JavaScript來實現交互可視化的,可以在WEB瀏覽器中實現美觀的視覺效果。缺點在於:版本時常更新但有時不向下兼容、語法晦澀等。

  • ggplot
    ggplot是基於R語言的ggplot2製作的python版本庫,但目前Yhat已停止對該庫的維護。

  • Plotly
    Plotly支持Python和R,優點在於可提供WEB在線交互,配色也好看。

  • Mapbox
    Mapbox是處理地理數據引擎更強的可視化工具庫。

二、What’s Matplotlib
pyplot是matplotlib的一個子模塊,主要爲底層的面向對象的繪圖庫提供狀態機界面。狀態機隱式地自動創建數字和做標軸以實現所需的繪圖。
matplotlib中所有內容都按照層次結果進行組織,頂層就是由pyplot提供的matplotlib“狀態機環境”。基於這個狀態機環境,我們可以創建圖形。
matplotlib中要素
接下來介紹matplotlib中幾個重要的要素:Figure、Axes、Axis
在這裏插入圖片描述

  • Figure
    Figure類似於一塊畫板,是包裹Axes、titles、legends等組件的最外層窗口。
  • Axes(子圖)
    Axes類似於畫紙,一個Figure上可以有多張畫紙,但至少有一個可以顯示內容的畫紙。
  • Axis(軸)

通過程序來看結果:
1、生成空畫板

fig=plt.figure()
fig.suptitle('No axes on thie figure')
>>>
Text(0.5,0.98,'No axes on thie figure')
<Figure size 432x288 with 0 Axes>

2、貼上畫紙

fig.ax_lst=plt.subplots(2,2)
plt.show()

在這裏插入圖片描述
plt.plot(x,y,format_string) 中參數
x軸數據,y軸數據,format_string控制曲線的格式(顏色、風格以及標記)
顏色字符color
在這裏插入圖片描述
風格字符linestyle
在這裏插入圖片描述
標記字符marker
在這裏插入圖片描述
除此之外還有:
markerfacecolor 標記顏色
markersize 標記大小

#繪出四個點,並用星狀表示虛線連接
plt.plot([1,2,3,6],[4,5,8,1],':*',markersize=10,color = '#ff0000') 
plt.show()

在這裏插入圖片描述
此外,還有一些常用方法:

plt.title("first graph") //圖像標題
plt.legend(loc=n)  //圖像圖例,n=1234不同位置
plt.ylabel(‘y軸標籤’)    //y軸標籤
plt.axis([-1,10,0,6])   //x軸範圍[-110],y軸[06]
plt.savefig(‘test’,dpi=600) //圖像保存,默認爲png格式 
plt.show()   //顯示圖像

三、How to use Matplotlib
全局設置:

import numpy as np
from matplotlib import pyplot as plt#導入pyplot繪圖工具
%matplotlib inline #在Jupyter notebook中由於每個人的環境有差異,有些必須執行plt.show()才能將圖片顯示出來,加上這行就不用show()也能顯示了

接下來展示條形圖(plot)、散點圖(scatter)、柱狀圖(bar)、直方圖(hist)、箱型圖(boxplot)以及扇形圖(pie)等用法。
條形圖plot:反映數據隨時間變化走勢(一個變量隨另一個變量變化的走勢)

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",markersize='10')
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()

在這裏插入圖片描述

散點圖scatter:反映兩個變量間相關關係

#散點圖
x=np.arange(1,20)
y=np.random.randn(19)
plt.scatter(x,y,label='x',color='k',s=25,marker='o')

在這裏插入圖片描述

柱狀圖bar:比較數值大小(區別直方圖)

#柱狀圖
x = np.arange(10)   #x爲x軸上刻度,代表y中第幾個數字
y = np.random.randint(0,30,10)
plt.bar(x,y,label='柱狀圖1')
plt.legend(loc=1)

在這裏插入圖片描述
matlibplot.pyplot 畫圖 axes.bar() x軸默認排序解決方法:
https://blog.csdn.net/qq_35318838/article/details/80198307

直方圖hist:查看數據頻數分佈

#直方圖
ages=np.random.randint(0,100,30) #ages表示生成30個0-100間整數
bins=np.arange(0,100,10)  #bins表示x軸刻度由0-100分爲五份
plt.hist(ages,bins,rwidth=0.8)

在這裏插入圖片描述
箱型圖boxplot:數據分佈情況,可查看異常值情況

#箱型圖
spread = np.random.rand(50) * 100
center = np.ones(25) * 50
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
data = np.concatenate((spread, center, flier_high, flier_low))
plt.boxplot(data)
plt.title('Basic Plot')

在這裏插入圖片描述
扇形圖pie

#扇形圖
players=[10,20,3,90]
types=['wow','wars','cs','lol']
plt.figure(figsize=(10,10))
plt.pie(players,#數值
        labels=types,#標籤
        shadow=True,#陰影
        autopct='%1.2f%%',#百分比顯示
        explode=(0.2,0,0,0),#突出顯示第一個
        startangle=90,#旋轉角度
        textprops={'fontsize':20})#字體屬性,這裏設大小爲20

在這裏插入圖片描述
此外還有堆疊圖(stackplot)等用法。
子圖

#子圖
plt.figure(figsize=(8,6),dpi=100) #設定畫板的寬度高度,單位爲英寸,dpi繪圖對象的分辨率,即每英寸多少個像素,默認80
#subplot(numRows,numCols,plotnum)
plt.subplot(2,2,2) #兩行兩列第二個位置
plt.plot([0,1],[0,1],color='r')
plt.title('A')
plt.subplot(2,2,1) #兩行兩列第一個位置
plt.plot([0,1],[0,1],color='b')
plt.title('B')
plt.subplot(2,1,2) #兩行一列中第二個位置
plt.scatter(range(1,10,1),np.random.rand(9),color='orange')
plt.title('C')

在這裏插入圖片描述

參考:
matplotlib繪製各類圖形
Matplotlib系列—pyplot的plot( )函數
Matplotlib常用繪圖示例

在這裏插入圖片描述
如何選擇合適的圖表:https://jingyan.baidu.com/article/37bce2be58288a1003f3a242.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章