Python可視化(二)——Seaborn

Seaborn是一個基于matplotlib的可視化庫,其為用戶提供了高級接口,并且該工具還深度集成了pandas的數據結構。并且該工具該集成了很多數據庫,配合官網給出的代碼示例,可以更方便的進行操作。

官網對它的介紹為:

Seaborn is a Python data visualization library based on matplotlib. It provides a high-level interface for drawing attractive and informative statistical graphics.Seaborn is a library for making statistical graphics in Python. It builds on top of matplotlib and integrates closely with pandas data structures.Seaborn helps you explore and understand your data. Its plotting functions operate on dataframes and arrays containing whole datasets and internally perform the necessary semantic mapping and statistical aggregation to produce informative plots. Its dataset-oriented, declarative API lets you focus on what the different elements of your plots mean, rather than on the details of how to draw them.
官網地址為:https://seaborn.pydata.org/

提示:引入seaborn會修改matplotlib默認的顏色方案和繪圖類型,以提高可讀性和美觀度。即使不使用seaborn API,可能也會引入seaborn,作為提高美觀度和繪制常見matplotlib圖形的簡化方法。

和matplotlib一般被命令為plt一樣,seaborn一般被命名為sns. 通常采用如下的導入方式:

import seaborn as sns

示例

這里先看一個示例:

# Import seaborn
import seaborn as sns
import pandas as pd# Apply the default theme
sns.set_theme()# Load an example dataset
tips = pd.read_csv(r"tips.csv")# Create a visualization
sns.relplot(data=tips,x="total_bill", y="tip", col="time",hue="smoker", style="smoker", size="size",
)

首先在上面的代碼中,導入了seaborn、pandas兩個庫。

然后set_theme()實際則是使用matplotlib rcParam系統,并對matplotlib進行配置,從而影響到最后的顯示。不過上面使用的是默認配置。

除了默認配置之外,可以使用參數獨立控制繪圖的風格和縮放比例等。

def set_theme(context="notebook", style="darkgrid", palette="deep",font="sans-serif", font_scale=1, color_codes=True, rc=None):"""Set aspects of the visual theme for all matplotlib and seaborn plots.This function changes the global defaults for all plots using thematplotlib rcParams system. The themeing is decomposed into several distinctsets of parameter values.The options are illustrated in the :doc:`aesthetics <../tutorial/aesthetics>`and :doc:`color palette <../tutorial/color_palettes>` tutorials.Parameters----------context : string or dictScaling parameters, see :func:`plotting_context`.style : string or dictAxes style parameters, see :func:`axes_style`.palette : string or sequenceColor palette, see :func:`color_palette`.font : stringFont family, see matplotlib font manager.font_scale : float, optionalSeparate scaling factor to independently scale the size of thefont elements.color_codes : boolIf ``True`` and ``palette`` is a seaborn palette, remap the shorthandcolor codes (e.g. "b", "g", "r", etc.) to the colors from this palette.rc : dict or NoneDictionary of rc parameter mappings to override the above.Examples--------.. include:: ../docstrings/set_theme.rst"""set_context(context, font_scale)set_style(style, rc={"font.family": font})set_palette(palette, color_codes=color_codes)if rc is not None:mpl.rcParams.update(rc)

這里和官網的示例有差異,是直接將csv文件下載到本地利用pd.read_csv()方法導入的。

之前提到seaborn和pandas關系緊密,因此能夠直接使用pandas中的數據結構。

最后是使用relplot()函數創建的圖表。

和matplotlib不同,seaborn的圖表函數中,data參數是必須的,該參數指定了數據集,seaborn能夠從該參數中推斷要顯示的數據。其他參數都是可選的,并且不需要指定圖表元素的屬性,比如顏色和標記。

數據結構

關于數據結構,使用seaborn最好是使用pandas DataFrame或者numpy array。

雖然list也可以直接使用,但是直接使用list不能發揮seaborn的優勢,有點大材小用了。

data = [5,7,6,2,6,8,6,2,4,9]sns.relplot(data, kind="line")

參數

這里看一下常用的幾個參數:

  • data:表示要使用的數據集。可以是 Pandas DataFrame、NumPy 數組或其他數據結構。
  • x、y:表示要繪制的數據的變量。在大多數函數中,x 和 y 分別表示橫軸和縱軸上的數據變量。
  • col:用于指定分組圖表中的列變量。當需要根據數據的某個特定變量進行分組并繪制多個子圖時,可以使用 col 參數。
  • hue:表示要對數據進行分組的變量,可以通過顏色或其他視覺屬性來區分不同的組。
  • palette:表示要使用的顏色調色板。可以是預定義的調色板名稱,也可以是自定義的顏色列表。
  • size、sizes:表示散點圖中數據點的大小。size 參數控制所有數據點的大小,而 sizes 參數可以傳入一個數組或列表,用于指定每個數據點的大小。
  • -style:表示散點圖中數據點的樣式。可以是預定義的樣式名稱,也可以是一個數組或列表,用于為每個數據點指定樣式。
  • kind:用于指定要創建的圖表類型
  • alpha:表示圖表元素的透明度。可以是一個介于 0 和 1 之間的浮點數。
  • linewidth、edgecolor:表示線條的寬度和顏色。
  • bins:表示直方圖中的條形數或箱線圖中箱子的數量。
  • orient:表示條形圖的方向,可以是 'v'(垂直)或 'h'(水平)。
  • ax:用于指定要在其上繪制圖表的matplotlib Axes對象

上圖總結起來就是:

  • 源數據為tips
  • x軸數據為tips中的total_bill列,y軸數據為tips中的tip列
  • 利用time列中的數據進行分組,time列中存在兩類數據,分別為Lunch和Dinner,所以分為兩個圖
  • hue參數為smoker列,smoker列中存在兩類數據,分別為Yes和No,所以每個圖中又分為兩類,即每個圖中的數據按照Yes和No分為兩類
  • style參數為smoker列,smoker列中存在兩類數據,分別為Yes和No,這里用顏色區分,顏色為默認設置中的配置
  • size參數為size列,size列中存在6類,在圖中就是數據點的大小不同

而kind參數主要有以下幾種:

  • kind='line':折線圖(Line plot)
  • kind='scatter':散點圖(Scatter plot)
  • kind='bar':條形圖(Bar plot)
  • kind='barh':水平條形圖(Horizontal bar plot)
  • kind='hist':直方圖(Histogram)
  • kind='box':箱線圖(Box plot)
  • kind='violin':小提琴圖(Violin plot)
  • kind='pie':餅圖(Pie chart)
  • kind='heatmap':熱力圖(Heatmap)
  • kind='kde':核密度估計圖(Kernel density plot)
  • kind='reg':線性回歸圖(Linear regression plot)

其它的參數也都有設置值,可查看官網或相關文檔。

圖表類型

從上面可以看出使用seaborn和matplotlib的區別,seaborn更加簡潔,但是matplotlib更加靈活。

使用seaborn不用考慮圖表的格式,線型,顏色,字體等等,只需要關注數據的分析。

而seaborn中主要的圖表類型有三大類,分別是:

  • 關系圖
  • 分布圖
  • 分類圖

其中關系圖的接口為relplot(),它是一個Figure-level的函數。

在關系圖中,可以使用kind參數來指定關系圖的類型,例如散點圖(scatter plot)、折線圖(line plot)等。

另外也可以直接使用對應的接口做出對應的圖形,比如:

  • relplot():創建關系圖的通用函數,可以繪制散點圖、折線圖、小提琴圖等不同類型的圖表。
  • scatterplot():繪制散點圖,用于顯示兩個連續變量之間的關系。
  • lineplot():繪制折線圖,用于顯示一個連續變量隨另一個連續變量的變化趨勢。

將上面的rellplot()函數改為scatterplot()函數,一樣可以得到相同的結果,只是從美觀的角度來看,沒有relplot()的結果好看

import matplotlib.pyplot as pltf, axs = plt.subplots(1, 2)sns.scatterplot(data=tips[tips["time"] == "Dinner"], x="total_bill", y="tip", hue="smoker", style="smoker", size="size", ax=axs[0])
sns.scatterplot(data=tips[tips["time"] == "Lunch"], x="total_bill", y="tip", hue="smoker", style="smoker", size="size", ax=axs[1])f.tight_layout()

分布圖的接口為displot(),它也是一個Figure-level的函數。

在分布圖中,可以使用kind參數來指定分布圖的類型,例如直方圖(hist plot)、核密度估計圖(kde plot)、累積分布圖(ecdf plot)等。

另外也可以直接使用對應的接口做出對應的圖形,比如:

  • displot():繪制直方圖、核密度估計圖和經驗累積分布函數等不同類型的單變量分布圖。
  • histplot():繪制直方圖,用于顯示單變量的分布。
  • kdeplot():繪制核密度估計圖,用于顯示單變量的概率密度估計。
  • ecdfplot():繪制經驗累積分布函數圖,用于顯示單變量的經驗累積分布。
  • rugplot():繪制地毯圖,用于顯示單變量的數據點分布。

分類圖的接口為catplot(),它也是一個Figure-level的函數。

在分類圖中,可以使用kind參數來指定分布圖的類型,例如條形圖(bar plot)、箱線圖(box plot)、小提琴圖(violin plot)等。

另外也可以直接使用對應的接口做出對應的圖形,比如:

  • barplot():繪制條形圖,用于顯示分類變量和數值變量之間的關系。
  • pointplot():繪制點圖,用于顯示分類變量和數值變量之間的關系,并顯示置信區間。
  • boxplot():繪制箱線圖,用于顯示分類變量和數值變量之間的關系,并顯示分位數和異常值。
  • violinplot():繪制小提琴圖,用于顯示分類變量和數值變量之間的關系,并顯示分布和概率密度。
  • stripplot():繪制散點圖,用于顯示分類變量和數值變量之間的關系。
  • swarmplot():繪制蜂群圖,用于顯示分類變量和數值變量之間的關系,并在同一位置上顯示每個數據點。

其實可以將seaborn的圖像看成是matplotlib的圖像,只是在matplotlib的基礎上進行了美化,使用戶可以關注于數據分析本身,而不是圖像的細節控制。

圖像的保存

既然seaborn的圖像是matplotlib的圖像,那么就可以使用matplotlib的保存方法來保存seaborn的圖像。

plt.savefig("test.png")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211391.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211391.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211391.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Servlet學習筆記

簡介 瀏覽器請求處理流程&#xff1a;瀏覽器發請求 > 服務器tomcat( > 應用程序 ( > servlet) ) Servlet應用的三大作用域&#xff1a;request&#xff0c;session&#xff0c;application tomcat存放項目的層級結構 注釋&#xff1a;servlet原引用包名 javax.serv…

卡爾曼濾波器

歡迎訪問我的博客首頁。 卡爾曼濾波器 1. 參考 1. 參考 卡爾曼濾波器&#xff0c;B 站&#xff0c;2020。擴展卡爾曼濾波器&#xff0c;CSDN&#xff0c;2023。

Git的安裝以及SSH配置

前言 近期工作需要&#xff0c;所以版本管理工具要用到Git&#xff0c;某些操作需要ssh進行操作&#xff0c;在某次操作中遇到&#xff1a;git bash報錯&#xff1a;Permission denied, please try again。經排查是ssh沒有配置我的key&#xff0c;所以就借著這篇文章整理了一下…

WorkPlus即時通訊,讓溝通零障礙!企業協作更高效

如今&#xff0c;隨著信息技術的快速發展&#xff0c;企業對于高效溝通和即時協作的需求也日益增長。在這個數字化時代&#xff0c;WorkPlus作為一款領先的企業級移動辦公平臺&#xff0c;以其強大的即時通訊功能和卓越的用戶體驗&#xff0c;成功為企業打造了高效溝通的新時代…

input = torch.randn(20, 2, 11, 11, 32)輸出形式

input torch.randn(20, 2, 11, 11, 32) m torch.nn.AdaptiveAvgPool3d((1,1, 32)) xm(input) print(x.shape) 結果&#xff1a; 也就是不用管批次和通道數

pico示波器使用

文章目錄 Pico示波器保存波形Pico示波器錄制數據Pico示波器解析CAN報文Pico示波器保存波形 Pico示波器可以通過以下步驟保存波形: 在示波器上選擇要保存的波形。連接示波器到計算機上,可以使用USB或者Ethernet連接。打開PicoScope軟件,選擇“File”菜單,然后選擇“Save As…

Python開發運維:Python垃圾回收機制

目錄 一、理論 1.Python垃圾回收機制 一、理論 1.Python垃圾回收機制 &#xff08;1&#xff09;引?計數器 1&#xff09;環狀雙向鏈表 refchain 在python程序中創建的任何對象都會放在refchain鏈表中。 name "david" age 20 hobby ["籃球",游泳…

放蘋果 .

把m個同樣的蘋果放在n個同樣的盤子里&#xff0c;允許有的盤子空著不放&#xff0c;問共有多少種不同的分法&#xff1f; 注意&#xff1a;如果有7個蘋果和3個盤子&#xff0c;&#xff08;5&#xff0c;1&#xff0c;1&#xff09;和&#xff08;1&#xff0c;5&#xff0c;1&…

spring集成mybatis簡單教程

首先說下實現了什么效果&#xff0c;就是不用每次查詢前手動創建 sessionFactory和添加datasource文件了。 整個工程結構是這樣的 這次我也把代碼放在了gitee上&#xff0c;方便大家更全貌的看到所有的實現細節。代碼鏈接如下&#xff1a; Java: 一些Java代碼 (gitee.com) …

大話數據結構-查找-多路查找樹

注&#xff1a;本文同步發布于稀土掘金。 7 多路查找樹 多路查找樹&#xff08;multi-way search tree&#xff09;&#xff0c;其每個結點的孩子可以多于兩個&#xff0c;且每一個結點處可以存儲多個元素。由于它是查找樹&#xff0c;所有元素之間存在某種特定的排序關系。 …

排序:歸并排序

目錄 歸并排序——有遞歸的&#xff1a; 基本思想&#xff1a; 思路分析&#xff1a; 代碼分析&#xff1a; 劃分區間思路&#xff1a; 代碼思路分析&#xff1a; 歸并排序——有遞歸的&#xff1a; 基本思想&#xff1a; 歸并排序&#xff08;MERGE-SORT&#xff…

2023 CCF中國軟件大會(CCF ChinaSoft)“軟件工程教育”論壇 成功召開

2023年12月1日&#xff0c;2023年度CCF中國軟件大會“軟件工程教育”論壇成功召開。 ? 自去年來大模型技術的出現以及在各個領域的應用&#xff0c;對相關的學科和行業產生了深刻的影響。軟件工程首當其沖&#xff0c;以ChatGpt和CopilotX等為代表的智能化開發工具可以幫助軟…

2024年網絡安全競賽-數字取證調查attack817

? 數字取證調查 (一)拓撲圖 服務器場景:FTPServer20221010(關閉鏈接) 服務器場景操作系統:未知 FTP用戶名:attack817密碼:attack817 分析attack.pcapng數據包文件,通過分析數據包attack.pcapng找出惡意用戶第一次訪問HTTP服務的數據包是第幾號,將該號數作為Flag值…

倪海廈:教你正確煮中藥,發揮最大藥效

同樣的一個湯劑&#xff0c;我開給你&#xff0c;你如果煮的方法不對&#xff0c;吃下去效果就沒那么好。 所以&#xff0c;湯&#xff0c;取它的迅捷&#xff0c;速度很快&#xff0c;煮湯的時候還有技巧&#xff0c;你喝湯料的時候&#xff0c;你到底是喝它的氣&#xff0c;…

RTMP流設置超時時間失敗

使用FFmpeg(版本是5.0.3&#xff09;將rtmp流作為輸入&#xff0c;設置超時時間&#xff08;使用-timeout參數&#xff09;&#xff0c;結果報錯&#xff1a;Cannot open Connection tcp://XXX:1935?listen&listen_timeout 通過./ffmpeg -help full 命令查看FFmpeg幫助&am…

Evidently:一個神奇的Python庫,機器學習必備!

Evidently 是一個面向數據科學家和機器學習工程師的開源 Python 庫。它有助于評估、測試和監控從驗證到生產的數據和 ML 模型。它適用于表格、文本數據和嵌入。 簡介 Evidently 是一個開源的 Python 工具&#xff0c;旨在幫助構建對機器學習模型的監控&#xff0c;以確保它們的…

2024年網絡安全競賽-A模塊任務解析報告單(詳細每一步)

2024年網絡安全競賽-A模塊任務 一、項目和任務描述: 假定你是某企業的網絡安全工程師,對于企業的服務器系統,根據任務要求確保各服務正常運行,并通過綜合運用登錄和密碼策略、流量完整性保護策略、事件監控策略、防火墻策略等多種安全策略來提升服務器系統的網絡安全防御能…

MyBatis參數獲取和傳遞

1、參數獲取方式 MyBatis可以通過以下兩種方式獲取參數值: #{變量名} 本質是占位符賦值 ${變量名} 本質是字符串拼接&#xff0c;如果拼接的是字符串類型或日期類型&#xff0c;則需要手動添加單引號 2、參數獲取的幾種情況&#xff1a; 2.1 mapper接口方法的參數為單個字…

判斷一個Series序列的值是否為單調遞減Series.is_monotonic_decreasing

【小白從小學Python、C、Java】 【計算機等考500強證書考研】 【Python-數據分析】 判斷一個Series序列中 各值是否單調遞減 s.is_monotonic_decreasing [太陽]選擇題 以下代碼的輸出結果中正確的是? import pandas as pd s1 pd.Series([3,2,1]) s2 pd.Series([3,2,4]) pri…

【代碼隨想錄】算法訓練計劃41

dp 1、343. 整數拆分 題目&#xff1a; 給定一個正整數 n &#xff0c;將其拆分為 k 個 正整數 的和&#xff08; k > 2 &#xff09;&#xff0c;并使這些整數的乘積最大化。 返回 你可以獲得的最大乘積 。 輸入: n 10 輸出: 36 解釋: 10 3 3 4, 3 3 4 36。 思路…