Python數(shù)據(jù)可視化常用4大繪圖庫原理詳解
今天我們就用一篇文章,帶大家梳理matplotlib、seaborn、plotly、pyecharts的繪圖原理,讓大家學(xué)起來不再那么費(fèi)勁!
1. matplotlib繪圖原理
關(guān)于matplotlib更詳細(xì)的繪圖說明,大家可以參考下面這篇文章,相信你看了以后一定學(xué)得會(huì)。
matplotlib繪圖原理:http://suo.im/678FCo
1)繪圖原理說明
通過我自己的學(xué)習(xí)和理解,我將matplotlib繪圖原理高度總結(jié)為如下幾步:
導(dǎo)庫;創(chuàng)建figure畫布對(duì)象;獲取對(duì)應(yīng)位置的axes坐標(biāo)系對(duì)象;調(diào)用axes對(duì)象,進(jìn)行對(duì)應(yīng)位置的圖形繪制;顯示圖形;
2)案例說明
# 1.導(dǎo)入相關(guān)庫import matplotlib as mplimport matplotlib.pyplot as plt# 2.創(chuàng)建figure畫布對(duì)象figure = plt.figure()# 3.獲取對(duì)應(yīng)位置的axes坐標(biāo)系對(duì)象axes1 = figure.add_subplot(2,1,1)axes2 = figure.add_subplot(2,1,2)# 4.調(diào)用axes對(duì)象,進(jìn)行對(duì)應(yīng)位置的圖形繪制axes1.plot([1,3,5,7],[4,9,6,8])axes2.plot([1,2,4,5],[8,4,6,2])# 5.顯示圖形figure.show()
結(jié)果如下:
2. seaborn繪圖原理
在這四個(gè)繪圖庫里面,只有matplotlib和seaborn存在一定的聯(lián)系,其余繪圖庫之間都沒有任何聯(lián)系,就連繪圖原理也都是不一樣的。
seaborn是matplotlib的更高級(jí)的封裝。因此學(xué)習(xí)seaborn之前,首先要知道m(xù)atplotlib的繪圖原理。由于seaborn是matplotlib的更高級(jí)的封裝,對(duì)于matplotlib的那些調(diào)優(yōu)參數(shù)設(shè)置,也都可以在使用seaborn繪制圖形之后使用。
我們知道,使用matplotlib繪圖,需要調(diào)節(jié)大量的繪圖參數(shù),需要記憶的東西很多。而seaborn基于matplotlib做了更高級(jí)的封裝,使得繪圖更加容易,它不需要了解大量的底層參數(shù),就可以繪制出很多比較精致的圖形。不僅如此,seaborn還兼容numpy、pandas數(shù)據(jù)結(jié)構(gòu),在組織數(shù)據(jù)上起了很大作用,從而更大程度上的幫助我們完成數(shù)據(jù)可視化。
由于seaborn的繪圖原理,和matplotlib的繪圖原理一致,這里也就不詳細(xì)介紹了,大家可以參考上面matplotlib的繪圖原理,來學(xué)習(xí)seaborn究竟如何繪圖,這里還是提供一個(gè)網(wǎng)址給大家。
seaborn繪圖原理:http://suo.im/5D3VPX
1)案例說明
# 1.導(dǎo)入相關(guān)庫import seaborn as snsimport matplotlib.pyplot as pltdf = pd.read_excel('data.xlsx',sheet_name='數(shù)據(jù)源')sns.set_style('dark')plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False# 注意:estimator表示對(duì)分組后的銷售數(shù)量求和。默認(rèn)是求均值。sns.barplot(x='品牌',y='銷售數(shù)量',data=df,color='steelblue',orient='v',estimator=sum)plt.show()
結(jié)果如下:
注意:可以看到在上述的繪圖代碼中,你應(yīng)該有這樣一個(gè)感受,圖中既有matplotlib的繪圖代碼,也有seaborn的繪圖代碼。其實(shí)就是這樣的,我們就是按照matplobt的繪圖原理進(jìn)行圖形繪制,只是有些地方改成seaborn特有的代碼即可,剩下的調(diào)整格式,都可以使用matplotlib中的方法進(jìn)行調(diào)整
3. plotly繪圖原理
首先在介紹這個(gè)圖的繪圖原理之前,我們先簡(jiǎn)單介紹一下plotly這個(gè)繪圖庫。
plotly是一個(gè)基于javascript的繪圖庫,plotly繪圖種類豐富,效果美觀; 易于保存與分享plotly的繪圖結(jié)果,并且可以與Web無縫集成; ploty默認(rèn)的繪圖結(jié)果,是一個(gè)HTML網(wǎng)頁文件,通過瀏覽器可以直接查看;它的繪圖原理和matplotlib、seaborn沒有任何關(guān)系,你需要單獨(dú)去學(xué)習(xí)它。同樣我還是提供了一個(gè)網(wǎng)址給你,讓你更詳細(xì)的學(xué)習(xí)plotly。
plotly繪圖原理:http://suo.im/5vxNTu
1)繪圖原理說明
通過我自己的學(xué)習(xí)和理解,我將plotly繪圖原理高度總結(jié)為如下幾步:
繪制圖形軌跡,在ployly里面叫做trace,每一個(gè)軌跡是一個(gè)trace。 將軌跡包裹成一個(gè)列表,形成一個(gè)“軌跡列表”。一個(gè)軌跡放在一個(gè)列表中,多個(gè)軌跡也是放在一個(gè)列表中。 創(chuàng)建畫布的同時(shí),并將上述的軌跡列表,傳入到Figure()中。 使用Layout()添加其他的繪圖參數(shù),完善圖形。 展示圖形。2)案例說明
import numpy as npimport pandas as pdimport plotly as pyimport plotly.graph_objs as goimport plotly.expression as pxfrom plotly import toolsdf = pd.read_excel('plot.xlsx')# 1.繪制圖形軌跡,在ployly里面叫做`trace`,每一個(gè)軌跡是一個(gè)trace。trace0 = go.Scatter(x=df['年份'],y=df['城鎮(zhèn)居民'],name='城鎮(zhèn)居民')trace1 = go.Scatter(x=df['年份'],y=df['農(nóng)村居民'],name='農(nóng)村居民')# 2.將軌跡包裹成一個(gè)列表,形成一個(gè)“軌跡列表”。一個(gè)軌跡放在一個(gè)列表中,多個(gè)軌跡也是放在一個(gè)列表中。data = [trace0,trace1]# 3.創(chuàng)建畫布的同時(shí),并將上述的`軌跡列表`,傳入到`Figure()`中。fig = go.Figure(data)# 4.使用`Layout()`添加其他的繪圖參數(shù),完善圖形。fig.update_layout( , xaxis_title='年份', yaxis_title='人均收入(元)')# 5.展示圖形。fig.show()
結(jié)果如下:
4. pyecharts繪圖原理
Echarts是一個(gè)由百度開源的數(shù)據(jù)可視化工具,憑借著良好的交互性,精巧的圖表設(shè)計(jì),得到了眾多開發(fā)者的認(rèn)可。而python是一門富有表達(dá)力的語言,很適合用于數(shù)據(jù)處理。當(dāng)數(shù)據(jù)分析遇上了數(shù)據(jù)可視化時(shí),pyecharts誕生了。
pyecharts分為v0.5和v1兩個(gè)大版本,v0.5和v1兩個(gè)版本不兼容,v1是一個(gè)全新的版本,因此我們的學(xué)習(xí)盡量都是基于v1版本進(jìn)行操作。
和plotly一樣,pyecharts的繪圖原理也是完全不同于matplotlib和seaborn,我們需要額外的去學(xué)習(xí)它們的繪圖原理,基于此,同樣提供一個(gè)網(wǎng)址給你,讓你更詳細(xì)的學(xué)習(xí)pyecharts。
pyecharts的繪圖原理:http://suo.im/5S1PF1
1)繪圖原理說明
通過我自己的學(xué)習(xí)和理解,我將plotly繪圖原理高度總結(jié)為如下幾步:
選擇圖表類型; 聲明圖形類并添加數(shù)據(jù); 選擇全局變量; 顯示及保存圖表;2)案例說明
# 1.選擇圖表類型:我們使用的是線圖,就直接從charts模塊中導(dǎo)入Line這個(gè)模塊;from pyecharts.charts import Lineimport pyecharts.options as optsimport numpy as npx = np.linspace(0,2 * np.pi,100)y = np.sin(x)( # 2.我們繪制的是Line線圖,就需要實(shí)例化這個(gè)圖形類,直接Line()即可; Line() # 3.添加數(shù)據(jù),分別給x,y軸添加數(shù)據(jù); .add_xaxis(xaxis_data=x) .add_yaxis(series_name='繪制線圖',y_axis=y,label_opts=opts.LabelOpts(is_show=False)) .set_global_opts(title_opts=opts.TitleOpts(title='我是標(biāo)題',subtitle='我是副標(biāo)題',title_link='https://www.baidu.com/'), tooltip_opts=opts.TooltipOpts())).render_notebook() # 4.render_notebook()用于顯示及保存圖表;
結(jié)果如下:
小結(jié)
通過上面的學(xué)習(xí),我相信肯定會(huì)讓大家對(duì)于這些庫的繪圖原理,一定會(huì)有一個(gè)新的認(rèn)識(shí)。
其實(shí)其實(shí)不管是任何編程軟件的繪圖庫,都有它的繪圖原理。我們與其盲目的去繪制各種各樣的圖形,不如先搞清楚它們的套路后,再去進(jìn)行繪圖庫的圖形練習(xí),這樣下去,我覺得大家會(huì)有一個(gè)很大的提高。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. React+umi+typeScript創(chuàng)建項(xiàng)目的過程2. ASP中常用的22個(gè)FSO文件操作函數(shù)整理3. ASP編碼必備的8條原則4. ASP調(diào)用WebService轉(zhuǎn)化成JSON數(shù)據(jù),附j(luò)son.min.asp5. 三個(gè)不常見的 HTML5 實(shí)用新特性簡(jiǎn)介6. Warning: require(): open_basedir restriction in effect,目錄配置open_basedir報(bào)錯(cuò)問題分析7. SharePoint Server 2019新特性介紹8. 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁9. ASP.NET Core 5.0中的Host.CreateDefaultBuilder執(zhí)行過程解析10. php測(cè)試程序運(yùn)行速度和頁面執(zhí)行速度的代碼
