最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python數(shù)據(jù)可視化Seaborn繪制山脊圖

 更新時(shí)間:2022年01月25日 14:35:02   作者:趙卓不凡?  
這篇文章主要介紹了利用python數(shù)據(jù)可視化Seaborn繪制山脊圖,山脊圖一般由垂直堆疊的折線圖組成,這些折線圖中的折線區(qū)域間彼此重疊,此外它們還共享相同的x軸.下面來(lái)看看具體的繪制過(guò)程吧,需要的小伙伴可以參考一下

1. 引言

山脊圖一般由垂直堆疊的折線圖組成,這些折線圖中的折線區(qū)域間彼此重疊,此外它們還共享相同的x軸.

山脊圖經(jīng)常以一種相對(duì)不常見(jiàn)且非常適合吸引大家注意力的緊湊圖的形式表現(xiàn)。觀察上圖,我們給其起名叫Ridge plot是非常恰當(dāng)?shù)?因?yàn)樯鲜鰣D表看起來(lái)確實(shí)很像山的脊背.此外,上述圖像還有另一個(gè)稱呼叫做Joy Plots–這主要是因?yàn)?code>Joy Division樂(lè)隊(duì)在如下專輯封面上采用了這種可視化形式.

2. 舉個(gè)栗子

在介紹完山脊圖的由來(lái)背景后,現(xiàn)在讓我們來(lái)舉個(gè)例子。我們使用以下數(shù)據(jù)集,主要包含 Netflix 的作品及對(duì)應(yīng)的 IMDB 分?jǐn)?shù)。

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
df = pd.read_csv('./data/film.csv')
languages = ['English', 'Hindi', 'Spanish',?
? ? ? ? ? ? ?'French', 'Italian', 'Portuguese']
df_filtered = df[df['Language'].isin(languages)]
df_filtered

運(yùn)行結(jié)果如下:

上表中從左往右,依次為ID,電影名稱,電影類型,首映日期,電影長(zhǎng)度,IMDB評(píng)分,以及電影語(yǔ)種.

接下來(lái)我們首先使用 Seaborns FacetGrid庫(kù)來(lái)為每個(gè)語(yǔ)言類別的電影創(chuàng)建不同IMDB下的概率密度分布曲線圖。實(shí)現(xiàn)這個(gè)功能很簡(jiǎn)單,僅需要對(duì)數(shù)據(jù)表中相應(yīng)名稱字段來(lái)按值進(jìn)行分組統(tǒng)計(jì)即可。

代碼如下:

sns.set_theme(style="white")
g = sns.FacetGrid(df_filtered, row="Language")
g.map_dataframe(sns.kdeplot, x="IMDB Score")
g.set(ylabel="")

結(jié)果如下:

上述實(shí)現(xiàn)采用的為默認(rèn)的參數(shù)配置,橫軸表示IMDB分?jǐn)?shù),縱軸表示對(duì)應(yīng)不同語(yǔ)種電影在不同IMDB得分下的概率. 從上述圖例中可以看出單個(gè)語(yǔ)種電影評(píng)分的概率密度分布,但是很難查看不同語(yǔ)種間的對(duì)比分布。

接著我們嘗試來(lái)改進(jìn)顯示效果,我們通過(guò)設(shè)置FacetGrid函數(shù)中相應(yīng)的參數(shù)來(lái)讓圖表變得更寬更短。

代碼如下:

sns.set_theme(style="white")
g = sns.FacetGrid(df_filtered, row="Language", aspect=9, height=1.2)
g.map_dataframe(sns.kdeplot, x="IMDB Score")
g.set(ylabel="")

結(jié)果如下:

上述改進(jìn)雖然可以讓數(shù)據(jù)間的對(duì)比變得明顯一些,但是這個(gè)可視化從視覺(jué)效果上看并沒(méi)有太大的吸引力。

觀察上圖,我們其實(shí)并沒(méi)有多少人去關(guān)注左側(cè)的Y軸信息,我們更關(guān)注的是數(shù)據(jù)的形狀.這就意味著我們這里可以刪除Y軸.

代碼如下:

sns.set_theme(style="white")
g = sns.FacetGrid(df_filtered, row="Language", aspect=9, height=1.2)
g.map_dataframe(sns.kdeplot, x="IMDB Score")
g.set_titles("")
g.set(yticks=[],ylabel="")
g.despine(left=True)

運(yùn)行結(jié)果如下:

3.山脊圖

經(jīng)過(guò)我們的優(yōu)化,上述不同語(yǔ)種電影的IMDB得分概率密度分布還是不夠直觀.
接下來(lái)我們一步一步來(lái)介紹我們的終結(jié)法寶–山脊圖.

首先,我們需要確保背景是透明的。

sns.set_theme(style="white", rc={"axes.facecolor": (0, 0, 0, 0)})

接著,我們需要填充線條的內(nèi)部區(qū)域。

g.map_dataframe(sns.kdeplot, x="IMDB Score", fill=True, alpha=1)

上述操作后,不同語(yǔ)種間的區(qū)域會(huì)出現(xiàn)重疊,這時(shí)我們還需要區(qū)分重疊部分。

我們通過(guò)以下代碼進(jìn)行區(qū)分:

sns.set_theme(style="white", rc={"axes.facecolor": (0, 0, 0, 0)})
g = sns.FacetGrid(df_filtered, row="Language", aspect=9, height=1.2)
g.map_dataframe(sns.kdeplot, x="IMDB Score", fill=True, alpha=1)
g.map_dataframe(sns.kdeplot, x="IMDB Score", color='black')
g.fig.subplots_adjust(hspace=-.5)
g.set_titles("")
g.set(yticks=[])
g.despine(left=True)

運(yùn)行結(jié)果如下:

到目前位置,我們實(shí)現(xiàn)了我們第一版的山脊圖,接著我們可以根據(jù)需要來(lái)自定義擴(kuò)展它。
FacetGrid函數(shù)非常適合創(chuàng)建多個(gè)可視化圖例,并且 .map 和 .map_dataframe 方法可以讓我們與所有子圖進(jìn)行交互。

代碼如下:

sns.set_theme(style="white", rc={"axes.facecolor": (0, 0, 0, 0), 'axes.linewidth':2})
palette = sns.color_palette("Set2", 12)
g = sns.FacetGrid(df_filtered, palette=palette, row="Language", hue="Language", aspect=9, height=1.2)
g.map_dataframe(sns.kdeplot, x="IMDB Score", fill=True, alpha=1)
g.map_dataframe(sns.kdeplot, x="IMDB Score", color='black')
def label(x, color, label):
? ? ax = plt.gca()
? ? ax.text(0, .2, label, color='black', fontsize=13,
? ? ? ? ? ? ha="left", va="center", transform=ax.transAxes)
? ??
g.map(label, "Language")
g.fig.subplots_adjust(hspace=-.5)
g.set_titles("")
g.set(yticks=[], xlabel="IMDB Score")
g.despine( left=True)
plt.suptitle('Netflix Originals - IMDB Scores by Language', y=0.98)

運(yùn)行結(jié)果如下:

4.擴(kuò)展

最后,我們可以使用下面代碼來(lái)復(fù)制Joy Division 專輯封面的可視化效果。

代碼如下:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

if __name__ == "__main__":
? ? url = "./data/pulsar.csv"
? ? df = pd.read_csv(url, header=None)
? ? df = df.stack().reset_index()
? ? df.columns = ['idx', 'x', 'y']
? ? sns.set_theme(rc={"axes.facecolor": (0, 0, 0, 0), 'figure.facecolor':'#000000', 'axes.grid':False})
? ? g = sns.FacetGrid(df, row='idx', aspect=50, height=0.4)
? ? # Draw the densities in a few steps
? ? g.map(sns.lineplot, 'x', 'y', clip_on=False, alpha=1, linewidth=1.5)
? ? g.map(plt.fill_between, 'x', 'y', color='#000000')
? ? g.map(sns.lineplot, 'x', 'y', clip_on=False, color='#ffffff', lw=2)
? ? # Set the subplots to overlap
? ? g.fig.subplots_adjust(hspace=-0.95)
? ? g.set_titles("")
? ? g.set(yticks=[], xticks=[], ylabel="", xlabel="")
? ? g.despine(bottom=True, left=True)
? ? plt.savefig('joy.png', facecolor='#000000')

運(yùn)行結(jié)果如下:

5.結(jié)論

總的來(lái)說(shuō),山脊圖非常適合關(guān)注數(shù)據(jù)的分布對(duì)比。山脊圖以吸引人的美學(xué)可以引起觀眾的共鳴,使它們成為向用戶介紹數(shù)據(jù)分布對(duì)比分析時(shí)的絕佳選擇。

到此這篇關(guān)于python數(shù)據(jù)可視化Seaborn繪制山脊圖的文章就介紹到這了,更多相關(guān)Seaborn繪制山脊圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django中多用戶角色和權(quán)限管理的實(shí)現(xiàn)步驟

    Django中多用戶角色和權(quán)限管理的實(shí)現(xiàn)步驟

    定義用戶角色模型:首先,定義一個(gè)用戶角色模型,該模型表示不同的用戶角色,例如管理員、普通用戶、編輯等,這篇文章主要介紹了Django中多用戶角色和權(quán)限管理的實(shí)現(xiàn)步驟,需要的朋友可以參考下
    2024-05-05
  • Python完全新手教程

    Python完全新手教程

    Python完全新手教程...
    2007-02-02
  • Django路由Path方法的實(shí)現(xiàn)

    Django路由Path方法的實(shí)現(xiàn)

    本文主要介紹了Django路由Path方法的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • python百行代碼自制電腦端網(wǎng)速懸浮窗的實(shí)現(xiàn)

    python百行代碼自制電腦端網(wǎng)速懸浮窗的實(shí)現(xiàn)

    這篇文章主要介紹了python百行代碼自制電腦端網(wǎng)速懸浮窗的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • python中struct模塊之字節(jié)型數(shù)據(jù)的處理方法

    python中struct模塊之字節(jié)型數(shù)據(jù)的處理方法

    今天小編就為大家分享一篇python中struct模塊之字節(jié)型數(shù)據(jù)的處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • python中模塊的__all__屬性詳解

    python中模塊的__all__屬性詳解

    這篇文章主要介紹了python中模塊的__all__屬性詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • 通過(guò)python連接Linux命令行代碼實(shí)例

    通過(guò)python連接Linux命令行代碼實(shí)例

    這篇文章主要介紹了通過(guò)python連接Linux命令行代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python條件分支?if?語(yǔ)句全講解(一文掌握)

    Python條件分支?if?語(yǔ)句全講解(一文掌握)

    在Python編程中,布爾運(yùn)算符有明確的優(yōu)先級(jí)順序,影響代碼邏輯判斷,從高到低依次是:括號(hào)()、not、and、or,括號(hào)用于明確運(yùn)算順序,not具有次高優(yōu)先級(jí),影響單個(gè)布爾值,and和or則根據(jù)優(yōu)先級(jí)順序結(jié)合布爾值,正確理解和應(yīng)用這些優(yōu)先級(jí)對(duì)于編寫有效和準(zhǔn)確的條件語(yǔ)句至關(guān)重要
    2024-10-10
  • pytyon 帶有重復(fù)的全排列

    pytyon 帶有重復(fù)的全排列

    輸入開始排列數(shù)字和結(jié)束排列數(shù)字, 就會(huì)一個(gè)字典序輸出所以的排列情況
    2013-08-08
  • 使用Python實(shí)現(xiàn)分別輸出每個(gè)數(shù)組

    使用Python實(shí)現(xiàn)分別輸出每個(gè)數(shù)組

    今天小編就為大家分享一篇使用Python實(shí)現(xiàn)分別輸出每個(gè)數(shù)組,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12

最新評(píng)論

开远市| 玉屏| 眉山市| 富锦市| 阿拉尔市| 民县| 读书| 株洲县| 安龙县| 竹北市| 运城市| 南靖县| 保定市| 武义县| 新宁县| 嘉鱼县| 曲靖市| 稻城县| 泰州市| 密山市| 德昌县| 黄梅县| 和田市| 丹东市| 晋州市| 施秉县| 乌什县| 敖汉旗| 滨州市| 凤庆县| 滕州市| 邯郸市| 崇文区| 来宾市| 普格县| 永靖县| 台前县| 正定县| 新化县| 大新县| 修武县|