百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

用Seaborn绘制图表

bigegpt 2024-08-14 14:51 2 浏览

Seaborn是一个功能强大的Python库,用于增强数据可视化。它为Matplotlib提供了大量高级接口。Seaborn可以很好地处理数据帧,而Matplotlib则不行,它可以让你以更简单的方式绘制引人注目的图表。

确保系统中安装了必要的库:

使用conda:

conda install pandas
conda install matplotlib
conda install seaborn

使用pip:

pip install pandas
pip install matplotlib
pip install seaborn

让我们首先导入所需的Python库和数据集。

你可以在这里找到本教程的CSV文件:https://github.com/jendcruz22/Medium-articles/tree/master/Plotting%20charts%20with%20Seaborn

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

df = pd.read_csv('Pokemon.csv', index_col = 0, encoding='unicode-escape')
df.head()

在上面的代码中,我们将index_col设置为0,这表示我们将第一列视为索引。

使用seaborn和Pokemon(口袋妖怪)数据集的属性,我们将创建一些非常有趣的可视化效果。我们首先要看的是散点图。

散点图

散点图使用点来表示不同数值变量的值。每个点在水平轴和垂直轴上的位置表示单个数据点的值。它们用于观察变量之间的关系。

在seaborn中制作散点图只需要使用“lmplot”函数。为此,我们将dataframe传递给data参数,然后传入x和y轴的列名。

默认情况下,散点图还显示一条回归线,它是一条最适合数据的直线。

sns.lmplot(x=’Attack’, y=’Defense’, data=df)
plt.show()

在这里你可以看到我们的散点图,它显示了进攻得分与防守得分的比较。

我们的回归线基本上显示了两轴之间的相关性。在这种情况下,它是向上倾斜的。也就是说当进攻得分越来越高,防守得分也会越来越高。要删除回归线,可以将“fitreg”参数设置为false。

此外,我们可以通过设置hue参数来在Pokemon的进化阶段着色。这个色调的参数是非常有用的,因为它允许你用颜色来表达第三维度的信息。

sns.lmplot(x=’Attack’, y=’Defense’, data=df, fit_reg=False, hue=’Stage’)
plt.show()

散点图看起来和之前的一样,除了中间没有回归线,而且每个点的颜色也不同。这些颜色只是显示了每个小精灵的阶段。Stage只是我们之前看到的数据中的另一个属性。

通过这张图,我们可以得出这样的结论:在第一阶段的pokemon(蓝点)通常比在更高阶段的pokemon得分更低。

箱线图

箱线图是常用于显示数据分布的重要图之一。在seaborn中只需要一行代码就可以使用boxplot函数显示箱线图。在本例中,我们将使用除total、stage和legendary属性之外的整个dataframe。

df_copy = df.drop([‘Total’, ‘Stage’, ‘Legendary’], axis=1)
sns.boxplot(data=df_copy)

在这里我们可以看到每个属性都有其各自的箱线图。

箱线图基于5个数字摘要,每个摘要以不同的行显示。中间的线是中值,是数据的中心点。箱线图末端的最底部和最顶部的线是四分位数1和4的中位数,基本上显示了分布的最小值和最大值。中间的另外两条线是四分位数2和3的中位数,它们显示了值与中位数之间的差异。超出此范围的单点表示数据中的异常值。

小提琴图

小提琴图与箱线图相似。小提琴图是箱线图非常有用的替代品。它们通过小提琴的厚度来显示分布,而不只是简要的统计。众所周知,小提琴图在分析和可视化数据集中不同属性的分布时非常方便。

在本例中,我们将使用上一个示例中的相同数据帧副本。

sns.violinplot(data=df_copy)
plt.show()

我们可以观察到口袋妖怪每个属性的值分布。小提琴较厚的区域意味着值的密度更高。小提琴图的中间部分通常比较厚,这意味着那里的值密度很高。我们比较了下一个口袋妖怪的攻击类型。为此,让我们使用相同的小提琴绘图方法。

plt.figure(figsize=(10,6))\sns.violinplot(x='Type 1', y='Attack', data=df)
plt.show()

这个图显示了每个口袋妖怪的主要类型的攻击分数分布。如你所见,“龙”型口袋妖怪的攻击得分最高,但它们也有较高的方差,这意味着它们的攻击分数也非常低。“Ghost”主类型的方差非常低,这意味着它们的大多数数据值都集中在中心。

热图

热图帮助你可视化矩阵类型的数据。例如,我们可以将口袋妖怪不同属性之间的所有关联可视化。

让我们通过调用“corr”函数来计算数据帧的相关性,并使用“heatmap”函数绘制热图。

corr = df_copy.corr()
sns.heatmap(corr)

上面的热图显示了我们数据帧的相关性。

长方体的颜色越浅,这两个属性之间的相关性就越高。例如,血量和口袋妖怪的整体速度之间的相关性非常低。因此,盒子的颜色是深色的。HP和防御速度之间的相关性非常高,因此我们可以在热图中看到一个红色方块。我们可以看到,当一个属性变高时,其他属性也会变高,比如防守速度。

直方图

直方图允许你绘制数值分布图。如果我们要使用matplotlib来创建柱状图,那么与使用seaborn创建柱状图相比,这将需要更多的工作。对于seaborn,只需要一行代码就可以创建。

例如,我们可以创建一个直方图来绘制带有攻击属性的分布。

sns.distplot(df.Attack, color=’blue’)

我们可以看到大多数口袋妖怪都在50-100之间。我们可以看到,攻击值大于100或小于50的口袋妖怪要少得多。

Calplots公司

与条形图类似,calplots允许你可视化每个类别变量的分布。我们可以使用calplot来查看每种主要类型中有多少口袋妖怪。

sns.countplot(x=’Type 1', data=df)
plt.xticks(rotation=-45)

我们可以看到,“水”类的口袋妖怪最多,而“仙女”和“冰”类的口袋妖怪最少。

密度图

密度图显示两个变量之间的分布。例如,我们可以使用密度图来比较口袋妖怪的两个属性:攻击值、防御值。我们将使用'jointplot'函数来完成此操作。

sns.jointplot(df.Attack, df.Defense, kind=’kde’, color=’lightblue’)

“kde”表示我们需要一个密度图。

如你所见,绘图区域在黑暗中的变化取决于区域中的值的数量。黑暗区域预示着一种非常牢固的关系。从这个图中我们可以看出,当攻击值在50到75之间时,防御值在50左右。

关于这篇文章。我希望你喜欢用seaborn可视化数据。

你可以在这里找到本文的代码和数据集:https://github.com/jendcruz22/Medium-articles/tree/master/Plotting%20charts%20with%20Seaborn

相关推荐

为3D手游打造, Visual Studio Unity扩展下载

IT之家(www.ithome.com):为3D手游打造,VisualStudioUnity扩展下载7月30日消息,微软正式发布升级版VisualStudioToolsforUnity扩...

由ArcMap属性字段自增引出字段计算器使用Python的技巧

1.前言前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQLServer中对于数值型字段可以设置自增。所以我打开ArcCatalog查看发现只提供默认值,没办法只能看...

微软首次回答 HoloLens 相关问题,终于爆料了

fengo2015/04/2115:11注:本文作者张静是NVIDIAGPU架构师,微信公众号“黑客与画家”(HackerAndPainter),知乎专栏地址。欢迎各位童鞋与他交流探讨。...

C#指针的应用(c#指针类型)

C#在有限的范围内支持指针。C#的指针只不过是一个持有另一类型内存地址的变量。但是在C#中,指针只能被声明为持有值类型和数组的内存地址。与引用类型不同,指针类型不被默认的垃圾收集机制所跟踪。出于同...

C# 堆栈(Stack)(c# 堆栈中定位调用messagebox 的地方)

C#集合在C#中,堆栈(Stack)是一种后进先出(LIFO,LastInFirstOut)的数据结构。堆栈(Stack)适用于存储和按顺序处理数据,其中最新添加的元素会最先被移除。堆...

欢迎回来:Fortran意外重回流行编程语言20强榜单

TIOBE指数是用来确定一种编程语言受欢迎程度的指标之一。它并不表明哪种编程语言是最好的,也不表明哪种编程语言写的代码行数最多,而是利用在谷歌、维基百科、必应、亚马逊、YouTube等各种引擎和网站上...

C#+NET MAUI实现跨平台/终端(linux,win,ios等)解决方案

简介.NETMulti-platformAppUI(.NETMAUI)是一个跨平台的框架,用于使用C#和XAML创建移动和桌面应用程序。使用.NETMAUI,您可以用一套代码库开发可以在A...

C#代码安全红线:SQL注入防护终极方案,让你的系统固若金汤

在数字化时代,应用系统的安全性至关重要。而SQL注入攻击,长期盘踞在OWASP(OpenWebApplicationSecurityProject)漏洞榜单的前列,成为众多基于数据库的应用系统...

C# (一)状态机模式(状态机代码实现)

最近空闲,炒炒隔夜饭,以前这些模式在自己项目种应用过不少,但一直没有像别人那样写一个系列,最近年纪大了,很多东西都忘记了,特别AI的兴起,更少写代码了,反正没什么事情,自己在重写一遍吧。创建型模式(5...

C# 中 Predicate 详解(c#中的replace)

Predicate泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由Array和List类的几种方法使用,用于在集合中搜索元素。Predicate<T>...

C#中$的用法?(c#中&&什么意思)

文章来自AI问答。在C#中,$符号用于字符串插值(StringInterpolation)。字符串插值是C#6.0引入的一种特性,它允许你在字符串中直接嵌入表达式,而不需要使用string.For...

C#并行编程:Parallel类(c# 并行处理)

在Parallel类中提供了三个静态方法作为结构化并行的基本形式:Parallel.Invoke方法:并行执行一组委托。Parallel.For方法:执行与C#for循环等价的并行方法。Parall...

颠覆认知!用Span重构foreach循环竟让数据处理快如闪电

在C#编程的世界里,数据处理效率始终是开发者们关注的焦点。随着项目规模的扩大和数据量的激增,哪怕是细微的性能提升,都可能对整个应用的响应速度和用户体验产生深远影响。近年来,C#引入的Span<T...

Unity3D手游开发实践《腾讯桌球》客户端开发经验总结

本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身。虽然基于Unity3D,很多东西同样适用于Cocos。本文从以下10大点进行阐述:1.架构设计2.原生插件/平台交互3.版本与补丁4.用脚本,...

.NET 7 AOT 的使用以及 .NET 与 Go 互相调用

目录背景C#部分环境要求创建一个控制台项目体验AOT编译C#调用库函数减少体积C#导出函数C#调用C#生成的AOTGolang部分安装GCCGolang导出函数.NETC#...