<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>

          Matplotlib數(shù)據(jù)可視化!

          共 3449字,需瀏覽 7分鐘

           ·

          2021-01-14 19:49

          ↑↑↑關(guān)注后"星標(biāo)"Datawhale
          每日干貨?&?每月組隊(duì)學(xué)習(xí),不錯(cuò)過(guò)
          ?Datawhale干貨?
          作者:橡魚(yú),Datawhale優(yōu)秀學(xué)習(xí)者

          數(shù)據(jù)可視化,就是指將結(jié)構(gòu)或非結(jié)構(gòu)數(shù)據(jù)轉(zhuǎn)換成適當(dāng)?shù)目梢暬瘓D表,然后將隱藏在數(shù)據(jù)中的信息直接展現(xiàn)于人們面前。相比傳統(tǒng)的用表格或文檔展現(xiàn)數(shù)據(jù)的方式,可視化能將數(shù)據(jù)以更加直觀的方式展現(xiàn)出來(lái),使數(shù)據(jù)更加客觀、更具說(shuō)服力

          數(shù)據(jù)可視化已經(jīng)被用于工作科研的方方面面,如工作報(bào)表、科研論文等,成為了不可或缺的基礎(chǔ)技能。現(xiàn)在,就讓我們一起來(lái)學(xué)習(xí)下數(shù)據(jù)可視化的基礎(chǔ)知識(shí)。

          一、 常用可視化工具

          Python有許多用于數(shù)據(jù)可視化的庫(kù),例如常見(jiàn)的有seaborn、pyecharts(echarts的Python版本)、ggplot(移植于R語(yǔ)言的ggplot2,但是有些差別,Python有其他方法可以調(diào)用R語(yǔ)言的ggplot2)、bokeh、Plotly(同時(shí)支持Python和R語(yǔ)言)等等,這些大多是基于Matplotlib進(jìn)行開(kāi)發(fā)封裝的

          Matplotlib是一個(gè)Python 2D繪圖庫(kù)(使用Matplotlib發(fā)布的mpl_toolkits庫(kù)可以畫(huà)3D圖形 ),能夠以多種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版物質(zhì)量的圖形,用來(lái)繪制各種靜態(tài),動(dòng)態(tài),交互式的圖表。

          Matplotlib 是 Python 最著名的繪圖庫(kù),它提供了一整套和 MATLAB 相似的命令 API,十分適合交互式地進(jìn)行制圖。而且也可以方便地將它作為繪圖控件,使用在Python腳本,Python和IPython Shell、Jupyter notebook,Web應(yīng)用程序服務(wù)器和各種圖形用戶(hù)界面工具包等上面。

          二、?Matplotlib 初識(shí)

          1. 例子

          Matplotlib的圖像是畫(huà)在figure(如windows,jupyter窗體)上的,每一個(gè)figure又包含了一個(gè)或多個(gè)axes(一個(gè)可以指定坐標(biāo)系的子區(qū)域)。最簡(jiǎn)單的創(chuàng)建figure以及axes的方式是通過(guò)pyplot.subplots命令,創(chuàng)建axes以后,可以使用Axes.plot繪制最簡(jiǎn)易的折線圖。

          聲明:以下使用的是IPython Shell

          %matplotlib??#?在IPython?Shell調(diào)用Matplotlib繪圖接口,需要加這行代碼
          import?matplotlib.pyplot?as?plt
          import?numpy?as?np
          ?
          fig,?ax=?plt.subplots()??#?創(chuàng)建一個(gè)包含一個(gè)axes的figure
          ?#?繪圖
          ax.plot([1,?2,?3,?4],?[1,?4,?3,?2])??

          這里有一個(gè)小知識(shí)點(diǎn),很小很小,但是對(duì)于剛剛接觸數(shù)據(jù)可視化的新手可能容易弄混。ax.plot([1, 2, 3, 4], [1, 4, 3, 2]) 這句代碼里面第一個(gè)參數(shù)是數(shù)據(jù)集里各個(gè)數(shù)據(jù)點(diǎn)的X值的集合,第二個(gè)參數(shù)數(shù)據(jù)集里各個(gè)數(shù)據(jù)點(diǎn)的Y值的集合。所以這里輸入的參數(shù)值并不是數(shù)學(xué)上常見(jiàn)的成對(duì)坐標(biāo)點(diǎn)如(x1,y1)、(x2,y2)、...、(xn,yn)的格式,而是 (x1,x2,...,xn)和(y1,y2,...,yn)

          2. 例子

          和MATLAB命令類(lèi)似,你還可以通過(guò)一種更簡(jiǎn)單的方式繪制圖像,matplotlib.pyplot 方法能夠直接在當(dāng)前axes上繪制圖像,如果用戶(hù)未指定axes,matplotlib會(huì)幫你自動(dòng)創(chuàng)建一個(gè)。所以上面的例子也可以簡(jiǎn)化為以下這一行代碼。

          plt.plot([1,?2,?3,?4],?[1,?4,?2,?3])??

          這里有個(gè)trick(坑)需要注意一下。如上所示,在IPython或jupyter notebook的同一個(gè)代碼框中,如果不對(duì)其聲明畫(huà)在哪個(gè)圖上(可以使用 plot() 函數(shù)里面的 ax 參數(shù)進(jìn)行指定),就會(huì)自動(dòng)畫(huà)到最后一個(gè)創(chuàng)建的圖上(即最后一個(gè)Figure對(duì)象的最后一個(gè)Axes子圖里)。
          plt.figure()??#?創(chuàng)建一個(gè)新的Figure對(duì)象
          plt.plot([1,?2,?3,?4],?[1,?4,?2,?3])?
          更多例子可以在Matplotlib官網(wǎng)查看:
          https://matplotlib.org/gallery/index.html

          三、 Matplotlib 全貌

          現(xiàn)在我們來(lái)深入看一下figure的組成。通過(guò)一張figure解剖圖,我們可以看到一個(gè)完整的matplotlib圖像通常會(huì)包括以下四個(gè)層級(jí),這些層級(jí)也被稱(chēng)為容器(container),下一節(jié)會(huì)詳細(xì)介紹。在matplotlib的世界中,我們將通過(guò)各種命令方法來(lái)操縱圖像中的每一個(gè)部分,從而達(dá)到數(shù)據(jù)可視化的最終效果,一副完整的圖像實(shí)際上是各類(lèi)子元素的集合。

          • Figure:頂層級(jí),用來(lái)容納所有繪圖元素。

          • Axes:matplotlib宇宙的核心,容納了大量元素用來(lái)構(gòu)造一幅幅子圖,一個(gè)figure可以由一個(gè)或多個(gè)子圖組成。

          • Axis:axes的下屬層級(jí),用于處理所有和坐標(biāo)軸,網(wǎng)格有關(guān)的元素。

          • Tick:axis的下屬層級(jí),用來(lái)處理所有和刻度有關(guān)的元素。

          四、 Matplotlib 繪圖接口

          matplotlib提供了兩種最常用的繪圖接口

          1. 顯式創(chuàng)建figure和axes,在上面調(diào)用繪圖方法,也被稱(chēng)為OO模式(object-oriented style)。
          2. 依賴(lài)pyplot自動(dòng)創(chuàng)建figure和axes,并繪圖。

          使用第一種繪圖接口,是這樣的:

          x?=?np.linspace(0,?2,?100)

          fig,?ax?=?plt.subplots()??
          ax.plot(x,?x,?label='linear')??
          ax.plot(x,?x**2,?label='quadratic')??
          ax.plot(x,?x**3,?label='cubic')??
          ax.set_xlabel('x?label')?
          ax.set_ylabel('y?label')?
          ax.set_title("Simple?Plot")??
          ax.legend()?
          而如果采用第二種繪圖接口,繪制同樣的圖,代碼是這樣的:
          plt.figure() ?IPython 里面需要加這行,jupyter notebook則不用,原因見(jiàn)<2.2 例子2>。
          x?=?np.linspace(0,?2,?100)

          plt.figure()??#?IPython里面需要加這行,jupyter?notebook則不用
          plt.plot(x,?x,?label='linear')?
          plt.plot(x,?x**2,?label='quadratic')??
          plt.plot(x,?x**3,?label='cubic')
          plt.xlabel('x?label')
          plt.ylabel('y?label')
          plt.title("Simple?Plot")
          plt.legend()

          五、?討論

          在工作或?qū)W習(xí)中通常何時(shí)會(huì)用到數(shù)據(jù)可視化,希望通過(guò)可視化達(dá)到什么目的?

          個(gè)人經(jīng)驗(yàn):

          • ① 在機(jī)器學(xué)習(xí)中,數(shù)據(jù)可視化經(jīng)常用于各種算法模型擬合效果的直觀展示

          例子1:線性回歸模型的擬合效果。

          例子2:機(jī)器學(xué)習(xí)聚類(lèi)算法的K-MEANS算法和DBSCAN算法對(duì)數(shù)據(jù)集劃分類(lèi)別的效果對(duì)比。
          下圖來(lái)源:K-MEANS可視化網(wǎng)站https://www.naftaliharris.com/blog/visualizing-k-means-clustering/

          下圖來(lái)源:DBSCAN算法可視化網(wǎng)站https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/


          • ② 在數(shù)據(jù)分析和數(shù)據(jù)挖掘中經(jīng)常用來(lái)檢查數(shù)據(jù)的分布,以及窺探數(shù)據(jù)集內(nèi)在的規(guī)律或事件發(fā)展的規(guī)律。以下是個(gè)人在數(shù)據(jù)分析和數(shù)據(jù)挖掘中使用到數(shù)據(jù)可視化的2個(gè)案例。
            例1:使用黃氏曲線評(píng)估零售店促銷(xiāo)活動(dòng)效果
            例2:Kaggle項(xiàng)目:Predict Future Sales(商品未來(lái)銷(xiāo)量預(yù)測(cè))

          參考連接(數(shù)據(jù)可視化開(kāi)源教程)

          https://github.com/datawhalechina/fantastic-matplotlib
          “整理不易,點(diǎn)三連
          瀏覽 49
          點(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>
                  大鸡吧av网站 | 欧美黄色大片一级a | 黄色一级片一级片 | 欧美高清爱爱视频 | 2018天天弄 |