<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ù)可視化!

          共 3864字,需瀏覽 8分鐘

           ·

          2021-01-18 17:47

          ↑ 點擊藍字?關(guān)注極市平臺

          作者丨橡魚
          來源丨Datawhale
          編輯丨極市平臺

          極市導(dǎo)讀

          ?

          數(shù)據(jù)可視化當(dāng)前前,在研究、教學(xué)和開發(fā)領(lǐng)域,乃是一個極為活躍而又關(guān)鍵的方面。本文簡單介紹了數(shù)據(jù)可視化的一些基礎(chǔ)知識,主要對Matplotlib 繪圖庫進行了介紹。?>>加入極市CV技術(shù)交流群,走在計算機視覺的最前沿

          數(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(一個可以指定坐標系的子區(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é)上常見的成對坐標點如(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é)會詳細介紹。在matplotlib的世界中,我們將通過各種命令方法來操縱圖像中的每一個部分,從而達到數(shù)據(jù)可視化的最終效果,一副完整的圖像實際上是各類子元素的集合。

          • Figure:頂層級,用來容納所有繪圖元素。
          • Axes:matplotlib宇宙的核心,容納了大量元素用來構(gòu)造一幅幅子圖,一個figure可以由一個或多個子圖組成。
          • Axis:axes的下屬層級,用于處理所有和坐標軸,網(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


          推薦閱讀




          添加極市小助手微信(ID : cvmart2),備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標檢測-深圳),即可申請加入極市目標檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術(shù)交流群:月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

          △長按添加極市小助手

          △長按關(guān)注極市平臺,獲取最新CV干貨

          覺得有用麻煩給個在看啦~??
          瀏覽 41
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  日韩爱爱视频 | 成人电影A片 | 波多野结衣AV网站 | 久热福利 | 青青草一区二区三区 |