程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python matplotlib繪畫十一種常見數據分析圖

編輯:Python

目錄

1. 折線圖

2. 散點圖

3. 直方圖 

4. 餅圖

5. 箱線圖 

6.概率圖 

7.雷達圖 

8.流向圖 

9.繪圖中的表格設置 

10. 極坐標圖 

11. 詞雲圖 

11.1 安裝相關的包

11.2 詞雲生成過程

1. 折線圖

折線圖(Line Chart)是一種將數據點按照順序連接起來的圖形,也可以看作是將散點圖按照X軸坐標順序鏈接起來的圖形。折線圖的主要功能是查看因變量y隨著自變量x改變的趨勢,最適合用於顯示隨時間(根據常用比例設置)而改變的連續數據。同時,還可以看出數量的差異

繪制折線圖plot的格式:

matplotlib.pyplot.plot(*args,**kwargs)

color參數的8種常用的縮寫見表

表2 color參數的常用顏色縮寫:

plt.plot繪制折線圖代碼展示:

import matplotlib.pyplot as pltimport numpy as np%matplotlib inlinex = np.arange(9)y = np.sin(x)z = np.cos(x)#marker數據點樣式,linewidth線寬,linestyle線型樣式,color顏色plt.plot(x,y,marker='*',linewidth=1,linestyle='--',color='orange')plt.plot(x,z)plt.title('matplotlib AK')plt.xlabel('height',fontsize=15)plt.ylabel('width',fontsize=15)#設置圖例plt.legend(['Y','Z'],loc='upper right')plt.grid(True)plt.show()

2. 散點圖

散點圖(Scatter Diagram)又稱為散點分布圖,是以一個特征為橫坐標,另一個特征為縱坐標,使用坐標點(散點)的分布形態反映特征間統計關系的一種圖形。值時由點在圖表中的位置表示,類別是由圖表中的不同標記表示 ,通常用於比較跨類別的數據

 scatter方法的格式:

matplotlib.pyplot.scatter(x,y,s=None,c=None,marker=None,alpha=None)

scatter函數主要參數及其說明見表3scatter的主要參數及其說明

scatter繪圖示例1:

fig.ax = plt.subplots()plt.rcParams['font.family'] = ['SimHei'] #用來顯示中文標簽plt.rcParams['axes.unicode_minus'] = False #用來正常顯示符號x1 = np.arange(1,30)y1 = np.sin(x1)ax1 = plt.subplot(1,1,1)plt.title('散點圖 AK')plt.xlabel('X')plt.ylabel('Y')lvalue = x1ax1.scatter(x1,y1,c='r',s=100,linewidths=lvalue,marker='o')plt.legend('x1')plt.show(),

 scatter繪圖示例2:

fig,ax = plt.subplots()plt.rcParams['font.family'] = ['SimHei'] #用來顯示中文標簽plt.rcParams['axes.unicode_minus'] = False #用來正常顯示符號for color in ['red','green','blue']: n = 500 x,y = np.random.randn(2,n) ax.scatter(x,y,c=color,label=color,alpha=0.3,edgecolor='none')ax.legend()ax.grid(True)plt.show()

3. 直方圖 

直方圖(Histogram)又稱質量分布圖,是統計報告圖的一種,由一系列高度不等的縱向條紋或線段表示數據分布的情況,一般用橫軸表示數據所屬類別,縱軸表示數量或者占比。用直方圖可以比較直觀地看出產品質量特性的分布狀態,便於判斷其總體質量分布情況。直方圖可以發現分布表無法發現的數據模式、樣本的頻率分布和總體的分布。

繪制直方圖函數bar格式:

matplotlib.pyplot.bar(left,height,width = 0.8,bottom = None,hold = None,data = None)

函數bar的常用參數及其說明見下表4

表4 bar常用參數及其說明:

bar繪圖示例1:

import pandas as pdimport matplotlib.pyplot as pltimport numpy as npfig,axes = plt.subplots(2,1)data = pd.Series(np.random.randn(16),index=list('abcdefghijklmnop'))data.plot.bar(ax = axes[0],color='k',alpha=0.7)data.plot.barh(ax = axes[1],color='k',alpha=0.7)

bar繪圖示例2:

import pandas as pdimport matplotlib.pyplot as pltimport numpy as npplt.rcParams['font.family'] = ['SimHei'] #用來顯示中文標簽plt.rcParams['axes.unicode_minus'] = False #用來正常顯示符號fig,ax = plt.subplots()x = np.arange(1,6)y1 = np.random.uniform(1.5,1.0,5)y2 = np.random.uniform(1.5,1.0,5)plt.bar(x,y1,width = 0.35,facecolor='lightskyblue',edgecolor = 'white')plt.bar(x+0.35,y2,width = 0.35,facecolor='yellowgreen',edgecolor = 'white')plt.show()

4. 餅圖

 餅圖(Pie Graph)用於表示不同分類的占比情況,通過弧度大小來對比各種分類,餅圖可以比較清楚的反映出部分與部分、部分與整體之間的比例關系,易於顯示每組數據相對於總數的大小,而且顯現的方式直觀。

繪制餅圖pie方法的格式:

matplotlib.pyplot.pie(x,explode = None,labels = None,color = None,autopct = None,pctdistance = 0.6,shadow=false,labeldistance=1.1,startangle=None,radius=None,...)

pie函數常用參數及其說明見表5

表5 pie函數常用參數及其說明:

pie繪圖示例:

plt.figure(figsize=(6,6))#建立軸的大小labels = ['Springs','Summer','Autumn','Winter']x = [15,30,45,10]explode = (0.05,0.05,0.05,0.05)#這個是控制分離的距離的,默認餅圖不分離plt.pie(x,labels = labels,explode = explode,startangle = 60,autopct='%1.1f%%')#autopct在圖中顯示比例值,注意值的格式plt.title('Rany days by season')plt.show()

5. 箱線圖 

箱線圖(Boxplot)也稱盒須圖,通過繪制反映數據分布特征的統計量,提供有關數據位置和分散情況的關鍵信息,尤其在比較不同特征時,更可表現其分散程度差異。箱線圖使用數據中的5個統計量(最小值,下四分位數,中位數,上四分位數和最大值)來描述數據,它可以粗略地看出數據是否具有對稱性,分布的分散程度等信息,特別可以用於對幾個樣本的比較,還可以粗略檢測異常值。

boxplot函數的格式:

matplotlib.pyplot.boxplot(x,notch = None,sym = None,vert = None,whis = None,positions = None,width = None,patch_artist = None,meanline = None,labels = None,...)

boxplot函數常用參數及其說明見表6

表6 boxplot函數常用參數及其說明:

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltnp.random.seed(2)#設置隨機種子df = pd.DataFrame(np.random.rand(5,4),columns = ['A','B','C','D'])#生成0~1的5*4維度數據並存入4列DataFrame中df.boxplot()plt.show()

6.概率圖 

概率圖模型時圖靈獲得者Pearl提出的用來表示變量間概率依賴關系的理論,正態分布又名高斯分布。正太概率密度函數normpdf(X,mu,sigma),其中,X為向量,mu為均值,sigma為標准差。

繪制概率圖:

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom scipy.stats import normfig,ax = plt.subplots()plt.rcParams['font.family'] = ['SimHei'] #用來顯示中文標簽plt.rcParams['axes.unicode_minus'] = False #用來正常顯示符號np.random.seed(1587554)mu = 100sigma = 15x = mu+sigma*np.random.randn(437)num_bins = 50n,bins,patches = ax.hist(x,num_bins,density=1,stacked=True)y = norm.pdf(bins,mu,sigma)ax.plot(bins,y,'--')fig.tight_layout()plt.show()

7.雷達圖 

 雷達圖也稱網絡圖、星圖、蜘蛛網圖、不規則多邊形、極坐標圖等。雷達圖是以從同一點開始的軸上表示的三個或更多個定量變量的二維圖表的形式顯示多變量數據的圖形方法。軸的相對位置和角度通常是無信息的。雷達圖相當於平行坐標圖,軸徑向排列。

繪制某學生成績信息的雷達圖

import matplotlib.pyplot as pltimport numpy as np%matplotlib inline#某學生的課程與成績courses = ['數據結構','數據可視化','高數','英語','軟件工程','組成原理','C語言','體育']scores = [82,95,78,85,45,88,76,88]dataLength = len(scores) #數據長度#angles數組把圓周等分為dataLength份angles = np.linspace(0,2*np.pi,dataLength,endpoint=False)scores.append(scores[0])angless = np.append(angles,angles[0]) #閉合#繪制雷達圖plt.polar(angless, #設置角度 scores, #設置各個角度上的數據 'rv--', #設置顏色、線型和端點符號 linewidth=2) #設置線寬#設置角度網絡標簽plt.thetagrids(angles*180/np.pi,courses,fontproperties='simhei',fontsize=12,color='k')#填充雷達圖內部plt.fill(angless,scores,facecolor='g',alpha=0.2)plt.show()

8.流向圖 

在運輸問題中,常常需要表明產地的產量、銷地的銷量,以及流向和流量的交通圖,此時可以用到流向圖。流向圖能夠直觀地展示數據流向,揭示出運動中的一些規律或現象。

流向圖繪制:

import numpy as npimport matplotlib.pyplot as pltY,X = np.mgrid[-3:3:100j,-3:3:100j]U = -1-X**2+YV = 1+X-Y**2speed = np.sqrt(U*U+V*V)plt.streamplot(X,Y,U,V,color=U,linewidth = 2,cmap = plt.cm.autumn)plt.colorbar()f,(ax1,ax2) = plt.subplots(ncols=2)ax1.streamplot(X,Y,U,V,density=[0.5,1])lw = 5*speed/speed.max()ax2.streamplot(X,Y,U,V,density=0.6,color='k',linewidth=lw)plt.show()

9.繪圖中的表格設置 

在繪圖中,有時候需要同時顯示數據表格。Matplotlib在繪圖中提供了table方法可以同時顯示數據表格

在繪圖中顯示數據表格;

import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.family'] = ['SimHei']data = [[66386,174296,75131,577908,32015], [58230,381139,78045,99308,160454], [89135,80552,152558,497981,603535], [78415,81858,150656,193263,69638], [139361,331509,343164,781380,52269]]columns = ('Freeze','Wind','Flood','Quake','Hail')rows = ['%d year'% x for x in (100,50,20,10,5)]values = np.arange(0,2500,500)value_increment = 1000colors = plt.cm.BuPu(np.linspace(0,0.5,len(columns)))n_rows=len(data)index = np.arange(len(columns))+0.3bar_width=0.4y_offset = np.array([0.0]*len(columns))cell_text = []for row in range(n_rows): plt.bar(index,data[row],bar_width,bottom=y_offset) y_offset = y_offset+data[row] cell_text.append(['%1.1f'%(x/1000.0) for x in y_offset])colors = colors[::-1]cell_text.reverse()the_table = plt.table(cellText=cell_text, rowLabels=rows, rowColours = colors, colLabels = columns, loc = 'bottom')plt.subplots_adjust(left=0.2,bottom=0.2)plt.ylabel("Loss in ${0}'s".format(value_increment))plt.yticks(values*value_increment,['%d' % val for val in values])plt.xticks([])plt.title('氣象災害損失')plt.show()

10. 極坐標圖 

 在平面投影中,由X軸和Y軸定位坐標;而在極坐標投影中,需要以半徑和角度的形式定位坐標。極坐標投影中的半徑以圓半徑的大小顯示,並且以每個角度為0°的圓的角度為起點投影角度。要生成極坐標投影,需要將投影類型定義為極坐標。

繪制極坐標圖:

import numpy as npimport matplotlib.pyplot as pltr = np.linspace(0,2,100)theta = 2*np.pi*rfig = plt.figure(figsize=(13,4))ax1 = plt.subplot(121,projection='polar')ax1.scatter(theta,r,label='Polar Projection',s=10)ax1.legend(bbox_to_anchor=(0.85,1.35))ax2 = plt.subplot(122)ax2.scatter(theta,r,label='Polar Projection',s=10)ax2.legend(bbox_to_anchor=(0.85,1.35))ax2.set_xlabel('R')ax2.set_ylabel(r'$\theta$')

11. 詞雲圖 

詞雲用於對網絡文本中出現頻率較高的關鍵詞予以視覺上的突出,形成“關鍵詞雲層”或“關鍵詞渲染”,從而過濾掉大量的文本信息,使浏覽網頁者只需要一眼掃過文本就可以領略文本的主旨。

11.1 安裝相關的包

 繪制詞需要WordCloud和jieba包。jieba用於從文本的句子裡分割出詞匯。

兩個包的安裝語句:

pip install wordcloudpip install jieba11.2 詞雲生成過程

一般生成詞雲的過程為:

1)使用Pandas讀取數據並將需要分析的數據轉化為列表

2)對獲得的列表數據使用分詞工具jieba進行遍歷分詞

3)使用WordCloud設置詞雲圖片的屬性、掩碼和停用詞,並生成詞雲圖像。

到此這篇關於python matplotlib繪畫十一種常見數據分析圖的文章就介紹到這了,更多相關python matplotlib 繪圖內容請搜索軟件開發網以前的文章或繼續浏覽下面的相關文章希望大家以後多多支持軟件開發網!



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved