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>

        (附代碼)50 種常用的 matplotlib 可視化圖

        共 7636字,需瀏覽 16分鐘

         ·

        2021-07-11 19:54

        點(diǎn)擊左上方藍(lán)字關(guān)注我們



        全網(wǎng)搜集目標(biāo)檢測(cè)相關(guān),人工篩選最優(yōu)價(jià)值內(nèi)容

        編者薦語
        數(shù)據(jù)分析與機(jī)器學(xué)習(xí)中常需要大量的可視化,因此才能直觀了解模型背地里都干了些什么。而在可視化中,matplotlib 算得上是最常用的工具,不論是對(duì)數(shù)據(jù)有個(gè)預(yù)先的整體了解,還是可視化預(yù)測(cè)效果,matplotlib 都是不可缺失的模塊。最近 Machine Learning Plus 的作者介紹了 50 種最常用的 matplotlib 可視化圖表。

        轉(zhuǎn)載自 | 機(jī)器之心




        介紹


        該表格主要介紹了 7 種不同的 matplotlib 可視化類別,讀者可根據(jù)目的選擇不同的圖。例如,如果你想要繪制兩個(gè)變量之間的關(guān)系,查看下面 Correlation 部分;或者如果你想展示某個(gè)變量的動(dòng)態(tài)變化,查看下面的 Change 部分。


        一個(gè)美麗的圖表應(yīng)該:


        • 提供準(zhǔn)確、有需求的信息,不歪曲事實(shí);

        • 設(shè)計(jì)簡(jiǎn)單,獲取時(shí)不會(huì)太費(fèi)力;

        • 美感是為了支持這些信息,而不是為了掩蓋這些信息;

        • 不要提供太過豐富的信息與太過復(fù)雜的結(jié)構(gòu)。


        如下所示為 7 種不同類型的可視化圖表:協(xié)相關(guān)性主要描述的是不同變量之間的相互關(guān)系;偏差主要展現(xiàn)出不同變量之間的差別;排序主要是一些有序的條形圖、散點(diǎn)圖或斜線圖等;分布就是繪制概率與統(tǒng)計(jì)中的分布圖,包括離散型的直方圖和連續(xù)型的概率密度分布圖等。后面還有變量的時(shí)序變化圖和類別圖等常見的可視化制圖類別。


        配置


        在繪制這 50 種可視化圖之前,我們需要配置一下依賴項(xiàng)以及通用設(shè)定,當(dāng)然后面有一些獨(dú)立的美圖會(huì)修改通用設(shè)定。如果讀者看中了某種可視化圖,那么用這些配置再加上對(duì)應(yīng)的可視化代碼就能嵌入到我們自己的項(xiàng)目中。



        如下所示 pandas 與 numpy 主要用于讀取和處理數(shù)據(jù),matplotlib 與 seaborn 主要用于可視化數(shù)據(jù)。其中 seaborn 其實(shí)是 matplotlib 上的一個(gè)高級(jí) API 封裝,在大多數(shù)情況下使用 seaborn 就能做出很有吸引力的圖,而使用 matplotlib 能制作更具特色的圖。


        # !pip install brewer2mpl
        import numpy as np
        import pandas as pd
        import matplotlib as mpl
        import matplotlib.pyplot as plt
        import seaborn as sns
        import warnings; warnings.filterwarnings(action='once')

        large = 22; med = 16; small = 12
        params = {'axes.titlesize': large,
                  'legend.fontsize': med,
                  'figure.figsize': (1610),
                  'axes.labelsize': med,
                  'axes.titlesize': med,
                  'xtick.labelsize': med,
                  'ytick.labelsize': med,
                  'figure.titlesize': large}
        plt.rcParams.update(params)
        plt.style.use('seaborn-whitegrid')
        sns.set_style("white")
        %matplotlib inline

        # Version
        print(mpl.__version__)  #> 3.0.0
        print(sns.__version__)  #> 0.9.0


        制圖示意



        前面列出了 7 大類共 50 種不同的可視化圖,但我們無法一一介紹,因此我們從協(xié)相關(guān)性、偏差、分布、時(shí)序變化和群組圖中各選擇了一個(gè)示例,它們能展示不同數(shù)據(jù)在不同情況下的可視化需求。


        相關(guān)圖(Correllogram)


        若有兩種變量,且它們的值為離散的,那么二維相關(guān)圖可以表示兩個(gè)變量所有可能組合之間的相關(guān)性。當(dāng)然如果是單變量,那么自身所有可能的組合也可以組成一個(gè)相關(guān)圖:

        # Import Dataset
        df = pd.read_csv("https://github.com/selva86/datasets/raw/master/mtcars.csv")

        # Plot
        plt.figure(figsize=(12,10), dpi= 80)
        sns.heatmap(df.corr(), xticklabels=df.corr().columns, yticklabels=df.corr().columns, cmap='RdYlGn', center=0, annot=True)

        # Decorations
        plt.title('Correlogram of mtcars', fontsize=22)
        plt.xticks(fontsize=12)
        plt.yticks(fontsize=12)
        plt.show()


        面積圖(Area Chart)


        通過使用不同的顏色表示水平軸和線之間的區(qū)域,面積圖不僅強(qiáng)調(diào)峰值和低谷值,同時(shí)還強(qiáng)調(diào)它們持續(xù)的時(shí)間:即峰值持續(xù)時(shí)間越長(zhǎng),面積越大。

        import numpy as np
        import pandas as pd

        # Prepare Data
        df = pd.read_csv("https://github.com/selva86/datasets/raw/master/economics.csv", parse_dates=['date']).head(100)
        x = np.arange(df.shape[0])
        y_returns = (df.psavert.diff().fillna(0)/df.psavert.shift(1)).fillna(0) * 100

        # Plot
        plt.figure(figsize=(16,10), dpi= 80)
        plt.fill_between(x[1:], y_returns[1:], 0, where=y_returns[1:] >= 0, facecolor='green', interpolate=True, alpha=0.7)
        plt.fill_between(x[1:], y_returns[1:], 0, where=y_returns[1:] <= 0, facecolor='red', interpolate=True, alpha=0.7)

        # Annotate
        plt.annotate('Peak \n1975', xy=(94.021.0), xytext=(88.028),
                     bbox=dict(boxstyle='square', fc='firebrick'),
                     arrowprops=dict(facecolor='steelblue', shrink=0.05), fontsize=15, color='white')


        # Decorations
        xtickvals = [str(m)[:3].upper()+"-"+str(y) for y,m in zip(df.date.dt.year, df.date.dt.month_name())]
        plt.gca().set_xticks(x[::6])
        plt.gca().set_xticklabels(xtickvals[::6], rotation=90, fontdict={'horizontalalignment''center''verticalalignment''center_baseline'})
        plt.ylim(-35,35)
        plt.xlim(1,100)
        plt.title("Month Economics Return %", fontsize=22)
        plt.ylabel('Monthly returns %')
        plt.grid(alpha=0.5)
        plt.show()


        密度圖(Density Plot)


        在概率論與統(tǒng)計(jì)學(xué)習(xí)方法中,可視化概率密度就變得非常重要了。這種密度圖正是可視化連續(xù)型隨機(jī)變量分布的利器,分布曲線上的每一個(gè)點(diǎn)都是概率密度,分布曲線下的每一段面積都是特定情況的概率。如下所示,通過將它們按「response」變量分組,我們可以了解 X 軸和 Y 軸之間的關(guān)系。

        # Import Data
        df = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv")

        # Draw Plot
        plt.figure(figsize=(16,10), dpi= 80)
        sns.kdeplot(df.loc[df['cyl'] == 4"cty"], shade=True, color="g", label="Cyl=4", alpha=.7)
        sns.kdeplot(df.loc[df['cyl'] == 5"cty"], shade=True, color="deeppink", label="Cyl=5", alpha=.7)
        sns.kdeplot(df.loc[df['cyl'] == 6"cty"], shade=True, color="dodgerblue", label="Cyl=6", alpha=.7)
        sns.kdeplot(df.loc[df['cyl'] == 8"cty"], shade=True, color="orange", label="Cyl=8", alpha=.7)

        # Decoration
        plt.title('Density Plot of City Mileage by n_Cylinders', fontsize=22)
        plt.legend()
        plt.show()


        此外值得注意的是,深度學(xué)習(xí),尤其是深度生成模型中的分布極其復(fù)雜,它們是不能直接可視化的,我們一般會(huì)通過 T-SNE 等降維方法可視化。


        時(shí)序變化圖(Time Series Plot)


        時(shí)序變化圖也是機(jī)器學(xué)習(xí)中最常見的一種可視化圖表,不論是可視化損失函數(shù)還是準(zhǔn)確率,都需要這種時(shí)序變化圖的幫助。這種圖主要關(guān)注某個(gè)變量怎樣隨時(shí)間變化而變化,以下展示了從 1949 到 1969 航空客運(yùn)量的變化:

        # Import Data
        df = pd.read_csv('https://github.com/selva86/datasets/raw/master/AirPassengers.csv')

        # Draw Plot
        plt.figure(figsize=(16,10), dpi= 80)
        plt.plot('date''traffic', data=df, color='tab:red')

        # Decoration
        plt.ylim(50750)
        xtick_location = df.index.tolist()[::12]
        xtick_labels = [x[-4:] for x in df.date.tolist()[::12]]
        plt.xticks(ticks=xtick_location, labels=xtick_labels, rotation=0, fontsize=12, horizontalalignment='center', alpha=.7)
        plt.yticks(fontsize=12, alpha=.7)
        plt.title("Air Passengers Traffic (1949 - 1969)", fontsize=22)
        plt.grid(axis='both', alpha=.3)

        # Remove borders
        plt.gca().spines["top"].set_alpha(0.0)    
        plt.gca().spines["bottom"].set_alpha(0.3)
        plt.gca().spines["right"].set_alpha(0.0)    
        plt.gca().spines["left"].set_alpha(0.3)   
        plt.show()


        樹狀圖(Dendrogram)


        樹狀圖是另一個(gè)比較有用的圖表,層次聚類或決策樹等算法可以使用它完成優(yōu)美的可視化。樹形圖是以樹的圖形表示數(shù)據(jù)或模型結(jié)構(gòu),以父層和子層的結(jié)構(gòu)來組織對(duì)象,是枚舉法的一種表達(dá)方式。下圖展示了一種神似層次聚類算法的圖表:

        import scipy.cluster.hierarchy as shc

        # Import Data
        df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/USArrests.csv')

        # Plot
        plt.figure(figsize=(1610), dpi= 80)  
        plt.title("USArrests Dendograms", fontsize=22)  
        dend = shc.dendrogram(shc.linkage(df[['Murder''Assault''UrbanPop''Rape']], method='ward'), labels=df.State.values, color_threshold=100)  
        plt.xticks(fontsize=12)
        plt.show()


        本文簡(jiǎn)要介紹了這篇文章,詳細(xì)的 50 種可視化可參考以下原文鏈接。

        50 種可視化圖原地址:https://www.machinelearningplus.com/plots/top-50-matplotlib-visualizations-the-master-plots-python


        END



        雙一流大學(xué)研究生團(tuán)隊(duì)創(chuàng)建,專注于目標(biāo)檢測(cè)與深度學(xué)習(xí),希望可以將分享變成一種習(xí)慣!

        整理不易,點(diǎn)贊三連↓

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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        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>
            高清无码在线视频 | 中文字幕免费一区 | 久久久国产91桃色一区二区三区 | 欧美性爱亚洲 | 一本一道久久 | 亚洲精品国产精品国自产网站按摩 | 欧美色图色就是色 | 自拍偷拍一区二区三区 | 日韩精品午夜 | 男人添女荫道口免费视频 |