爲何要寫這篇文章?
最近有很多粉絲來問我,Python繪圖庫太多,我知不知道學哪個?即便我選擇了某一個繪圖庫後,我也不知道怎麼學
,我不知道第一步作什麼,也不知道接下來該怎麼作,四個字一學就忘
。javascript
其實這也是我當時很困擾
的一個問題,我當時在學習完numpy和pandas後,就開始了matplotlib的學習。我反正是很是崩潰的,每次就感受繪圖代碼怎麼這麼多,繪圖邏輯徹底一團糟,不知道如何動手。java
後面隨着本身反覆的學習,我找到了學習Python繪圖庫的方法,那就是學習它的繪圖原理
。正所謂:「知己知彼,百戰不殆」
,學會了原理,剩下的就是熟練的問題了。python
今天咱們就用一篇文章,帶你們梳理matplotlib
、seaborn
、plotly
、pyecharts
的繪圖原理,讓你們學起來再也不那麼費勁!web
![](http://static.javashuo.com/static/loading.gif)
1. matplotlib繪圖原理
關於matplotlib更詳細的繪圖說明,你們能夠參考下面這篇文章,相信你看了之後必定學得會。express
matplotlib繪圖原理:http://suo.im/678FCo編程
1)繪圖原理說明
經過我本身的學習和理解,我將matplotlib繪圖原理高度總結爲以下幾步:瀏覽器
-
① 導庫; -
② 建立 figure
畫布對象; -
③ 獲取對應位置的 axes
座標系對象; -
④ 調用axes對象,進行對應位置的圖形繪製; -
⑤ 顯示圖形;
2)案例說明
# 1.導入相關庫
import matplotlib as mpl
import matplotlib.pyplot as plt
# 2.建立figure畫布對象
figure = plt.figure()
# 3.獲取對應位置的axes座標系對象
axes1 = figure.add_subplot(2,1,1)
axes2 = figure.add_subplot(2,1,2)
# 4.調用axes對象,進行對應位置的圖形繪製
axes1.plot([1,3,5,7],[4,9,6,8])
axes2.plot([1,2,4,5],[8,4,6,2])
# 5.顯示圖形
figure.show()
結果以下:微信
![](http://static.javashuo.com/static/loading.gif)
2. seaborn繪圖原理
在這四個繪圖庫裏面,只有matplotlib
和seaborn
存在必定的聯繫,其他繪圖庫之間都沒有任何聯繫,就連繪圖原理也都是不同的。數據結構
seaborn是matplotlib的更高級的封裝
。所以學習seaborn以前,首先要知道matplotlib的繪圖原理。因爲seaborn是matplotlib的更高級的封裝,對於matplotlib的那些調優參數設置
,也均可以在使用seaborn繪製圖形以後使用。app
咱們知道,使用matplotlib繪圖,須要調節大量的繪圖參數,須要記憶的東西不少。而seaborn基於matplotlib作了更高級的封裝,使得繪圖更加容易
,它不須要了解大量的底層參數,就能夠繪製出不少比較精緻的圖形。不只如此,seaborn還兼容numpy
、pandas
數據結構,在組織數據上起了很大做用,從而更大程度上的幫助咱們完成數據可視化。
因爲seaborn的繪圖原理,和matplotlib的繪圖原理一致
,這裏也就不詳細介紹了,你們能夠參考上面matplotlib的繪圖原理,來學習seaborn究竟如何繪圖,這裏仍是提供一個網址給你們。
seaborn繪圖原理:http://suo.im/5D3VPX
1)案例說明
# 1.導入相關庫
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_excel("data.xlsx",sheet_name="數據源")
sns.set_style("dark")
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 注意:estimator表示對分組後的銷售數量求和。默認是求均值。
sns.barplot(x="品牌",y="銷售數量",data=df,color="steelblue",orient="v",estimator=sum)
plt.show()
結果以下:
![](http://static.javashuo.com/static/loading.gif)
注意:
能夠看到在上述的繪圖代碼中,你應該有這樣一個感覺,圖中既有matplotlib的繪圖代碼,也有seaborn的繪圖代碼。其實就是這樣的,咱們就是按照matplobt的繪圖原理進行圖形繪製,只是有些地方改爲seaborn特有的代碼便可,剩下的調整格式,均可以使用matplotlib中的方法進行調整。
3. plotly繪圖原理
首先在介紹這個圖的繪圖原理以前,咱們先簡單介紹一下plotly這個繪圖庫。
-
plotly是一個基於javascript的繪圖庫,plotly繪圖種類豐富,效果美觀; -
易於保存與分享plotly的繪圖結果,而且能夠與Web無縫集成; -
ploty默認的繪圖結果,是一個HTML網頁文件,經過瀏覽器能夠直接查看;
它的繪圖原理和matplotlib、seaborn沒有任何關係,你須要單獨去學習它。一樣我仍是提供了一個網址給你,讓你更詳細的學習plotly。
plotly繪圖原理:http://suo.im/5vxNTu
1)繪圖原理說明
經過我本身的學習和理解,我將plotly繪圖原理高度總結爲以下幾步:
-
① 繪製圖形軌跡,在ployly裏面叫作 trace
,每個軌跡是一個trace。 -
② 將軌跡包裹成一個列表,造成一個「軌跡列表」。一個軌跡放在一個列表中,多個軌跡也是放在一個列表中。 -
③ 建立畫布的同時,並將上述的 軌跡列表
,傳入到Figure()
中。 -
④ 使用 Layout()
添加其餘的繪圖參數,完善圖形。 -
⑤ 展現圖形。
2)案例說明
import numpy as np
import pandas as pd
import plotly as py
import plotly.graph_objs as go
import plotly.expression as px
from plotly import tools
df = pd.read_excel("plot.xlsx")
# 1.繪製圖形軌跡,在ployly裏面叫作`trace`,每個軌跡是一個trace。
trace0 = go.Scatter(x=df["年份"],y=df["城鎮居民"],name="城鎮居民")
trace1 = go.Scatter(x=df["年份"],y=df["農村居民"],name="農村居民")
# 2.將軌跡包裹成一個列表,造成一個「軌跡列表」。一個軌跡放在一個列表中,多個軌跡也是放在一個列表中。
data = [trace0,trace1]
# 3.建立畫布的同時,並將上述的`軌跡列表`,傳入到`Figure()`中。
fig = go.Figure(data)
# 4.使用`Layout()`添加其餘的繪圖參數,完善圖形。
fig.update_layout(
title="城鄉居民家庭人均收入",
xaxis_title="年份",
yaxis_title="人均收入(元)"
)
# 5.展現圖形。
fig.show()
結果以下:
![](http://static.javashuo.com/static/loading.gif)
4. pyecharts繪圖原理
Echarts
是一個由百度開源的數據可視化工具,憑藉着良好的交互性,精巧的圖表設計,獲得了衆多開發者的承認。而python是一門富有表達力的語言,很適合用於數據處理。當數據分析趕上了數據可視化時,pyecharts
誕生了。
pyecharts分爲v0.5
和v1
兩個大版本,v0.5和v1兩個版本不兼容,v1是一個全新的版本,所以咱們的學習儘可能都是基於v1版本
進行操做。
和plotly同樣,pyecharts的繪圖原理也是徹底不一樣於matplotlib和seaborn,咱們須要額外的去學習它們的繪圖原理,基於此,一樣提供一個網址給你,讓你更詳細的學習pyecharts。
pyecharts的繪圖原理:http://suo.im/5S1PF1
1)繪圖原理說明
經過我本身的學習和理解,我將plotly繪圖原理高度總結爲以下幾步:
-
① 選擇圖表類型; -
② 聲明圖形類並添加數據; -
③ 選擇全局變量; -
④ 顯示及保存圖表;
2)案例說明
# 1.選擇圖表類型:咱們使用的是線圖,就直接從charts模塊中導入Line這個模塊;
from pyecharts.charts import Line
import pyecharts.options as opts
import numpy as np
x = np.linspace(0,2 * np.pi,100)
y = np.sin(x)
(
# 2.咱們繪製的是Line線圖,就須要實例化這個圖形類,直接Line()便可;
Line()
# 3.添加數據,分別給x,y軸添加數據;
.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="我是標題",subtitle="我是副標題",title_link="https://www.baidu.com/"),
tooltip_opts=opts.TooltipOpts())
).render_notebook() # 4.render_notebook()用於顯示及保存圖表;
結果以下:
![](http://static.javashuo.com/static/loading.gif)
小結
經過上面的學習,我相信確定會讓你們對於這些庫的繪圖原理,必定會有一個新的認識。
其實其實不論是任何編程軟件的繪圖庫,都有它的繪圖原理。咱們與其盲目的去繪製各類各樣的圖形,不如先搞清楚它們的套路後,再去進行繪圖庫的圖形練習,這樣下去,我以爲你們會有一個很大的提升。
關注微信公衆號『數據分析與統計學之美』,後臺回覆"入羣" 拉你進羣哦,氣氛很好滴呀!
喜歡本文點個在看
![](http://static.javashuo.com/static/loading.gif)
本文分享自微信公衆號 - 數據分析與統計學之美(gh_21c25c7e71d0)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。