1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Matplotlib數(shù)據(jù)可視化方法總結(jié)

        共 3539字,需瀏覽 8分鐘

         ·

        2021-01-15 02:20

        Matplotlib?

        作者:橡魚
        轉(zhuǎn)自:Datawhale

        數(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)出來,使數(shù)據(jù)更加客觀、更具說服力

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

        一、 常用可視化工具

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

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

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

        二、?Matplotlib 初識

        1. 例子

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

        聲明:以下使用的是IPython Shell

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

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

        2. 例子

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

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

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

        三、 Matplotlib 全貌

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

        • Figure:頂層級,用來容納所有繪圖元素。

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

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

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

        四、 Matplotlib 繪圖接口

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

        1. 顯式創(chuàng)建figure和axes,在上面調(diào)用繪圖方法,也被稱為OO模式(object-oriented style)。
        2. 依賴pyplot自動創(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則不用,原因見<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ù)據(jù)可視化,希望通過可視化達到什么目的?

        個人經(jīng)驗:

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

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

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

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


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

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

        https://github.com/datawhalechina/fantastic-matplotlib

        往期精彩:

        ?機器學(xué)習(xí)實驗室的一點年度小結(jié)

        【原創(chuàng)首發(fā)】機器學(xué)習(xí)公式推導(dǎo)與代碼實現(xiàn)30講.pdf

        【原創(chuàng)首發(fā)】深度學(xué)習(xí)語義分割理論與實戰(zhàn)指南.pdf

        ?談中小企業(yè)算法崗面試

        ?算法工程師研發(fā)技能表

        ?真正想做算法的,不要害怕內(nèi)卷

        ?技術(shù)學(xué)習(xí)不能眼高手低

        ?技術(shù)人要學(xué)會自我營銷

        ?做人不能過擬合

        求個在看

        瀏覽 28
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            色色网站 | 在线免费性爱视频 | 欣荣双乳高耸呻吟不止在线观看 | 免费黄网站在线观看 | 天天拍天天操 | 国产35页| 91国内精品 | 五月婷色 | 豆花官网免费看 | 亚洲男人的天堂视频网在线观看+720P |