python可視化基礎


常用的python可視化工具包是matplotlib,seaborn是在matplotlib基礎上做的進一步封裝。入坑python可視化,對有些人來說如同望山跑死馬,心氣上早輸了一節。其實學習一門新知識,首先要掌握的是這門知識的最少最核心知識,剩下的就讓它在實踐中拓展吧。

視圖分類

可視化視圖的分類常常從兩個維度:變量個數和變量之間的關系。按變量個數分可分為單變量分析和多變量分析。變量之間的關系常有下面四種:

  • 比較關系,如:折線圖。
  • 聯系,如:散點圖。
  • 構圖,如:餅圖。
  • 分布,如:直方圖。

知道了這些,還不夠!你好要掌握如下幾種常見的視圖畫法。
view_draw
工欲善其事,必先利其器!開始畫圖之前你需要注意這幾個問題:

  • 引入合適的包
import matplotlib.pyplot as plt
import seaborn as sns
  • 處理中文亂碼和負號問題
plt.rcParams['font.sans-serif']=['SimHei'] # 用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False #用來正常顯示負號

Plus1:上面的中文設置在MAC平台的Spyder上無效,需要替換成如下的設置:

plt.rcParams['font.family'] = ['Arial Unicode MS'] #用來正常顯示中文標簽

Plus2:你可以把下面的這幾條語句當成作圖過程中的固定代碼塊:

import matplotlib.pyplot as plt # 導入作圖庫
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負號
plt.figure(figsize = (7, 5)) # 創建圖像區域,指定比例

好了現在開始我們的繪圖之旅吧!

散點圖(scatter plot)

散點圖可以用來顯示兩個變量的關系,其核心示例代碼如下:

plt.scatter(x,y,marker='X')
plt.show()

對應的生成圖如下:
scatter_plot

折線圖

折線圖一般用來描述數據隨時間變化的趨勢,其核心代碼示例如下:

x =[i+1 for i in range(2009,2019)]
y =[5,3,6,20,17,16,19,30,32,35]

plt.plot(x,y)
plt.show()

其生成圖如下所示:
在這里插入圖片描述
折線圖豪華升級版本代碼如下:

import numpy as np
import matplotlib.pyplot as plt
x =np.linspace(0,10,1000)
y=np.sin(x)+1
z=np.cos(x**2)+1
plt.figure(figsize=(8,4))
plt.plot(x,y,label='$\sin x+1$',color='red',linewidth=2)
plt.plot(x,z,'b--',label='$\cos x^2+1$')
plt.xlabel('Time(s) ')
plt.ylabel('Volt')
plt.title('A Simple Example')
plt.ylim(0,2.2)
plt.legend()
plt.show()

圖形示例.png

直方圖

直方圖又稱質量分布圖,能比較直觀的體現出不同階段,數量(質量)的分布狀態,其核心示例代碼如下:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd

a =np.random.randn(100)
b = pd.Series(a)

plt.hist(b)
plt.show()

其生成圖如下所示:
hist_view

條形圖

條形圖和直方圖很像,如果說通過直方圖可以了解到變量的數值分布,那么條形圖可以幫我們查看變量的類別特征。其核心示例代碼如下:

x =['cat1','cat2','cat3','cat4','cat5']
y =[5,4,8,12,7]
plt.bar(x,y)
plt.show()

其生成圖如下:
bar_view

箱線圖

箱線圖又稱盒式圖,由五個數值點構成:max(最大值)、min(最小值)、median(中位數)、Q3(上四分位數)和Q1(下四分位數)組成,比較直觀的圖示如下:
box_plot
下面我們來模擬箱線圖的生成,其核心示例代碼如下:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd

data = np.random.normal(size=(10,4))
lables =["A","B","C","D"]
plt.boxplot(data,labels=lables)
plt.show()

生成圖如下所示:
box_plot

餅圖

餅圖常用來描述部分和整體之間的比例,其核心示例代碼如下

nums =[24,37,19,9]
lables =["A","B","C","D"]
plt.pie(x=nums,labels=lables)
plt.show()

其生成圖示例如下:
pie

其豪華升級版本如下:

import matplotlib.pyplot as plt

labels = 'Frogs','Hogs','Dogs','Logs'
sizes =[15,30,45,10]
colors=['yellowgreen','gold','lightskyblue','lightcoral']
explode=(0,0.1,0,0)
plt.pie(sizes,explode =explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=90)
plt.axis('equal')
plt.show()

其示例圖如下所示:
餅型圖示例.png

熱力圖

熱力圖是一種直觀的多遠變量分析方法,是一種矩陣表示方法,其中矩陣的不同元素值用不同的顏色來表示。在模擬時,我們需要導入seaborn中自帶的數據集fights。其核心示例代碼如下:


import matplotlib.pyplot as plt
import seaborn as sns
# data prepare
flights = sns.load_dataset("flights")
data=flights.pivot('year','month','passengers')

sns.heatmap(data)
plt.show()

其圖像示例如下:
heat_map
未完待續…


免責聲明!

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



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