<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深度講解Python四大常用繪圖庫(kù)的“繪圖原理”

          共 4228字,需瀏覽 9分鐘

           ·

          2020-08-02 09:01

          為什么要寫(xiě)這篇文章?

          最近有不少粉絲來(lái)問(wèn)我,Python繪圖庫(kù)太多,我知不知道學(xué)哪一個(gè)?即使我選擇了某一個(gè)繪圖庫(kù)后,我也不知道怎么學(xué),我不知道第一步做什么,也不知道接下來(lái)該怎么做,四個(gè)字一學(xué)就忘

          其實(shí)這也是我當(dāng)時(shí)很困擾的一個(gè)問(wèn)題,我當(dāng)時(shí)在學(xué)習(xí)完numpy和pandas后,就開(kāi)始了matplotlib的學(xué)習(xí)。我反正是非常崩潰的,每次就感覺(jué)繪圖代碼怎么這么多,繪圖邏輯完全一團(tuán)糟,不知道如何動(dòng)手。

          后面隨著自己反復(fù)的學(xué)習(xí),我找到了學(xué)習(xí)Python繪圖庫(kù)的方法,那就是學(xué)習(xí)它的繪圖原理。正所謂:“知己知彼,百戰(zhàn)不殆”,學(xué)會(huì)了原理,剩下的就是熟練的問(wèn)題了。

          今天我們就用一篇文章,帶大家梳理matplotlibseabornplotlypyecharts的繪圖原理,讓大家學(xué)起來(lái)不再那么費(fèi)勁!

          1. matplotlib繪圖原理

          關(guān)于matplotlib更詳細(xì)的繪圖說(shuō)明,大家可以參考下面這篇文章,相信你看了以后一定學(xué)得會(huì)。

          matplotlib繪圖原理:http://suo.im/678FCo

          1)繪圖原理說(shuō)明

          通過(guò)我自己的學(xué)習(xí)和理解,我將matplotlib繪圖原理高度總結(jié)為如下幾步:

          • ① 導(dǎo)庫(kù);
          • ② 創(chuàng)建figure畫(huà)布對(duì)象;
          • ③ 獲取對(duì)應(yīng)位置的axes坐標(biāo)系對(duì)象;
          • ④ 調(diào)用axes對(duì)象,進(jìn)行對(duì)應(yīng)位置的圖形繪制;
          • ⑤ 顯示圖形;

          2)案例說(shuō)明

          #?1.導(dǎo)入相關(guān)庫(kù)
          import?matplotlib?as?mpl
          import?matplotlib.pyplot?as?plt
          #?2.創(chuàng)建figure畫(huà)布對(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è)繪圖庫(kù)里面,只有matplotlibseaborn存在一定的聯(lián)系,其余繪圖庫(kù)之間都沒(méi)有任何聯(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還兼容numpypandas數(shù)據(jù)結(jié)構(gòu),在組織數(shù)據(jù)上起了很大作用,從而更大程度上的幫助我們完成數(shù)據(jù)可視化。

          由于seaborn的繪圖原理,和matplotlib的繪圖原理一致,這里也就不詳細(xì)介紹了,大家可以參考上面matplotlib的繪圖原理,來(lái)學(xué)習(xí)seaborn究竟如何繪圖,這里還是提供一個(gè)網(wǎng)址給大家。

          seaborn繪圖原理:http://suo.im/5D3VPX

          1)案例說(shuō)明

          #?1.導(dǎo)入相關(guān)庫(kù)
          import?seaborn?as?sns
          import?matplotlib.pyplot?as?plt

          df?=?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ì)分組后的銷(xiāo)售數(shù)量求和。默認(rèn)是求均值。
          sns.barplot(x="品牌",y="銷(xiāo)售數(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è)繪圖庫(kù)。

          • plotly是一個(gè)基于javascript的繪圖庫(kù),plotly繪圖種類豐富,效果美觀;
          • 易于保存與分享plotly的繪圖結(jié)果,并且可以與Web無(wú)縫集成;
          • ploty默認(rèn)的繪圖結(jié)果,是一個(gè)HTML網(wǎng)頁(yè)文件,通過(guò)瀏覽器可以直接查看;

          它的繪圖原理和matplotlib、seaborn沒(méi)有任何關(guān)系,你需要單獨(dú)去學(xué)習(xí)它。同樣我還是提供了一個(gè)網(wǎng)址給你,讓你更詳細(xì)的學(xué)習(xí)plotly。

          plotly繪圖原理:http://suo.im/5vxNTu

          1)繪圖原理說(shuō)明

          通過(guò)我自己的學(xué)習(xí)和理解,我將plotly繪圖原理高度總結(jié)為如下幾步:

          • ① 繪制圖形軌跡,在ployly里面叫做trace,每一個(gè)軌跡是一個(gè)trace。
          • ② 將軌跡包裹成一個(gè)列表,形成一個(gè)“軌跡列表”。一個(gè)軌跡放在一個(gè)列表中,多個(gè)軌跡也是放在一個(gè)列表中。
          • ③ 創(chuàng)建畫(huà)布的同時(shí),并將上述的軌跡列表,傳入到Figure()中。
          • ④ 使用Layout()添加其他的繪圖參數(shù),完善圖形。
          • ⑤ 展示圖形。

          2)案例說(shuō)明

          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`,每一個(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)建畫(huà)布的同時(shí),并將上述的`軌跡列表`,傳入到`Figure()`中。
          fig?=?go.Figure(data)
          # 4.使用`Layout()`添加其他的繪圖參數(shù),完善圖形。
          fig.update_layout(
          ????title="城鄉(xiāng)居民家庭人均收入",
          ????xaxis_title="年份",
          ????yaxis_title="人均收入(元)"
          )
          # 5.展示圖形。
          fig.show()

          結(jié)果如下:

          4. pyecharts繪圖原理

          Echarts是一個(gè)由百度開(kāi)源的數(shù)據(jù)可視化工具,憑借著良好的交互性,精巧的圖表設(shè)計(jì),得到了眾多開(kāi)發(fā)者的認(rèn)可。而python是一門(mén)富有表達(dá)力的語(yǔ)言,很適合用于數(shù)據(jù)處理。當(dāng)數(shù)據(jù)分析遇上了數(shù)據(jù)可視化時(shí),pyecharts誕生了。

          pyecharts分為v0.5v1兩個(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)繪圖原理說(shuō)明

          通過(guò)我自己的學(xué)習(xí)和理解,我將plotly繪圖原理高度總結(jié)為如下幾步:

          • ① 選擇圖表類型;
          • ② 聲明圖形類并添加數(shù)據(jù);
          • ③ 選擇全局變量;
          • ④ 顯示及保存圖表;

          2)案例說(shuō)明

          # 1.選擇圖表類型:我們使用的是線圖,就直接從charts模塊中導(dǎo)入Line這個(gè)模塊;
          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線圖,就需要實(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é)

          通過(guò)上面的學(xué)習(xí),我相信肯定會(huì)讓大家對(duì)于這些庫(kù)的繪圖原理,一定會(huì)有一個(gè)新的認(rèn)識(shí)。

          其實(shí)其實(shí)不管是任何編程軟件的繪圖庫(kù),都有它的繪圖原理。我們與其盲目的去繪制各種各樣的圖形,不如先搞清楚它們的套路后,再去進(jìn)行繪圖庫(kù)的圖形練習(xí),這樣下去,我覺(jué)得大家會(huì)有一個(gè)很大的提高。

          python爬蟲(chóng)人工智能大數(shù)據(jù)公眾號(hào)

          瀏覽 57
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  苍井空一区二区三区四区 | 毛片123| 想要xx在线 | 国产一级a毛一级a看免费观看 | 尻逼网站 |