- 頻數分析
a. 定性分析:柱狀圖、餅形圖
i. 柱狀圖:柱的高度代表某種類型的頻數
ii. 餅狀圖:面積代表某種類型的頻數
b. 定量分析:直方圖、分佈曲線
i. 直方圖:將定量數據劃分爲若干連續區間,在這些連續的區間上繪製柱(類似柱狀圖)
ii. 分佈曲線:對應數據的分佈函數 - 關係分析:散點圖
a. 散點圖:分別以自變量和因變量作爲橫縱座標,當自變量與因變量線性相關時,在散點圖中,點近似分佈在一條直線上 - 探索分析:箱型圖
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中幾個重要的要素: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=1、2、3、4不同位置
plt.ylabel(‘y軸標籤’) //y軸標籤
plt.axis([-1,10,0,6]) //x軸範圍[-1,10],y軸[0,6]
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