Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >10个实用的数据可视化的图表总结

10个实用的数据可视化的图表总结

作者头像
deephub
发布于 2023-02-01 01:44:26
发布于 2023-02-01 01:44:26
2.5K00
代码可运行
举报
文章被收录于专栏:DeepHub IMBADeepHub IMBA
运行总次数:0
代码可运行

用于深入了解数据的一些独特的数据可视化技术

可视化是一种方便的观察数据的方式,可以一目了然地了解数据块。我们经常使用柱状图、直方图、饼图、箱图、热图、散点图、线状图等。这些典型的图对于数据可视化是必不可少的。除了这些被广泛使用的图表外,还有许多很好的却很少被使用的可视化方法,这些图有助于完成我们的工作,下面我们看看有那些图可以进行。

1、平行坐标图(Parallel Coordinate)

我们最多可以可视化 3 维数据。但是我们有时需要可视化超过 3 维的数据才能获得更多的信息。我们经常使用 PCA 或 t-SNE 来降维并绘制它。在降维的情况下,可能会丢失大量信息。在某些情况下,我们需要考虑所有特征, 平行坐标图有助于做到这一点。

上面的图片。横线(平行轴)表示鸢尾花的特征(花瓣长、萼片长、萼片宽、花瓣宽)。分类是Setosa, Versicolor和Virginica。上图将该物种编码为Setosa→1,Versicolor→2,Virginica→3。每个平行轴包含最小值到最大值(例如,花瓣长度从1到6.9,萼片长度从4.3到7.9,等等)。例如,考虑花瓣长度轴。这表明与其他两种植物相比,濑蝶属植物的花瓣长度较小,其中维珍属植物的花瓣长度最高。

有了这个图,我们可以很容易地获得数据集的总体信息。数据集是什么样子的?让我们来看看。

让我们用Plotly Express库[1]可视化数据。Plotly库提供了一个交互式绘图工具。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import plotly.express as px
 df = px.data.iris() 
 fig = px.parallel_coordinates(df, color="species_id", labels={"species_id": "Species",
                 "sepal_width": "Sepal Width", "sepal_length": "Sepal Length",
                 "petal_width": "Petal Width", "petal_length": "Petal Length", },
                              color_continuous_scale=px.colors.diverging.Tealrose,
                              color_continuous_midpoint=2)
 fig.show()

除了上图以外我们还可以使用其他库,如pandas、scikit-learn和matplotlib来绘制并行坐标。

2、六边形分箱图 (Hexagonal Binning)

六边形分箱图是一种用六边形直观表示二维数值数据点密度的方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ax = df.plot.hexbin(x='sepal_width', y='sepal_length', gridsize=20,color='#BDE320')

我考虑了上一节的数据集来绘制上面的六边形分箱图。Pandas 允许我们绘制六边形 binning [2]。我已经展示了用于查找 sepal_width 和 sepal_length 列的密度的图。

如果仔细观察图表,我们会发现总面积被分成了无数个六边形。每个六边形覆盖特定区域。我们注意到六边形有颜色变化。六边形有的没有颜色,有的是淡绿色,有的颜色很深。根据图右侧显示的色标,颜色密度随密度变化。比例表示具有颜色变化的数据点的数量。六边形没有填充颜色,这意味着该区域没有数据点。

其他库,如 matplotlib、seaborn、bokeh(交互式绘图)也可用于绘制它。

3、等高线密度图(Contour )

二维等高线密度图是可视化特定区域内数据点密度的另一种方法。这是为了找到两个数值变量的密度。例如,下面的图显示了在每个阴影区域有多少数据点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import plotly.express as px
 fig = px.density_contour(df, x="sepal_width", y="sepal_length")
 fig.update_traces(contours_coloring="fill", contours_showlabels = True)
 fig.show()

为了生成上面的图表,我这里使用了plotly库,因为它可以方便地绘制交互式的图表。我们这里绘制了两个变量 sepal_width 和 sepal_length 的密度。

当然,也可以使用其他库,如seaborn、matplotlib等。

4、QQ-plot

QQ plot是另一个有趣的图。QQ是Quantile - Quantile plot的缩写(Quantile/percentile是一个范围,在这个范围内数据下降了指定百分比。例如,第10个quantile/percentile表示在该范围下,找到了10%的数据,90% 超出范围)。这是一种直观地检查数值变量是否服从正态分布的方法。让我解释一下它是如何工作的。

图(a)是样本分布;(b) 是标准正态分布。对于样本分布,数据范围从 10 到 100(100% 数据在 10 到 100 之间)。但对于标准正态分布,100% 的数据在 -3 到 3(z 分数)的范围内。在 QQ 图中,两个 x 轴值均分为 100 个相等的部分(称为分位数)。如果我们针对 x 和 y 轴绘制这两个值,我们将得到一个散点图。

散点图位于对角线上。这意味着样本分布是正态分布。如果散点图位于左边或右边而不是对角线,这意味着样本不是正态分布的。

导入必要的库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import pandas as pd
 import numpy as np
 import matplotlib.pyplot as plt
 import seaborn as sns

生成正态分布数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 np.random.seed(10)
 # Generate Univariate Observations
 gauss_data = 5 * np.random.randn(100) + 50

绘制数据点的分布。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 sns.histplot(data=gauss_data, kde=True)

该图显示数据是正态分布的。我们用数据点做qq-plot来检验它是否正态分布。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import statsmodels.api as sm
 # q-q plot
 sm.qqplot(gauss_data, line='s')
 plt.show()

该图显示散点位于对角线上。所以它是正态分布的。

5、小提琴图(Violin Plot)

小提琴图与箱线图相关。我们能从小提琴图中获得的另一个信息是密度分布。简单来说就是一个结合了密度分布的箱线图。我们将其与箱线图进行比较。

在小提琴图中,小提琴中间的白点表示中点。实心框表示四分位数间距 (IQR)。上下相邻值是异常值的围栏。超出范围,一切都是异常值。下图显示了比较。

让我们看看小提琴图的可视化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import seaborn as sns
 sns.violinplot(data=df, y="sepal_width")

我们还可以通过传递名称来绘制不同物种的小提琴图。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import seaborn as sns
 sns.violinplot(data=df,x='species', y="sepal_width")

还可以使用其他库,如plotly、matplotlib等来绘制小提琴图。

6、箱线图的改进版(Boxen plot)

Boxenplot 是 seaborn 库引入的一种新型箱线图。对于箱线图,框是在四分位数上创建的。但在 Boxenplot 中,数据被分成更多的分位数。它提供了对数据的更多内存。

鸢尾花数据集的 Boxenplot 显示了 sepal_width 的数据分布。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 sns.boxenplot(x=df["sepal_width"])

上图显示了比箱线图更多的盒。这是因为每个框代表一个特定的分位数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 sns.boxenplot(data=df, x="species",y='sepal_width')

不同物种sepal_width的Boxenplot图。

7、点图

下图中有一些名为误差线的垂直线和其他一些连接这些垂直线的线。让我们看看它的确切含义。

点图是一种通过上图中显示的点的位置来表示数值变量集中趋势的方法,误差条表示变量的不确定性(置信区间)[4]。绘制线图是为了比较不同分类值的数值变量的变异性 [4]。

让我们举一个实际的例子——

我们继续使用 seaborn 库和 iris 数据集(在平行坐标部分中提到)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import seaborn as sns
 sns.pointplot(data=df,x="species", y="sepal_width")

该图表显示了不同花的萼片宽度的变异性。我们还可以绘制多个点图。

8、分簇散点图(Swarm plot)

Swarm plot 是另一个受“beeswarm”启发的有趣图表。通过此图我们可以轻松了解不同的分类值如何沿数值轴分布 [5]。它在不重叠数据点的情况下绘制数据。但它不适用于大型数据集。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import seaborn as sns
 sns.swarmplot(data=df,x="species", y="sepal_width")

9、旭日图(Sunburst Chart)

它是圆环图或饼图的定制版本,将一些额外的层次信息集成到图中 [7]。

整个图表被分成几个环(从内到外)。它保存层次结构信息,其中内环位于层次结构的顶部,外环位于较低的[7]阶。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import plotly.express as px
 df = px.data.tips()

绘制旭日图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 fig = px.sunburst(df, path=['sex', 'day', 'time'], values='total_bill', color='time')
 fig.show()

sunburst类的path属性提供了层次结构,其中性别位于层次结构的顶部,然后是日期和时间。

10、词云(Word Cloud)

词云图的想法非常简单。假设我们有一组文本文档。单词有很多,有些是经常出现的,有些是很少出现的。在词云图中,所有单词都被绘制在特定的区域中,频繁出现的单词被高亮显示(用较大的字体显示)。有了这个词云,我们可以很容易地找到重要的客户反馈,热门的政治议程话题等。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import pandas as pd
 data=pd.read_csv('/work/android-games.csv')
 data.head()

我们统计每个类别的数据数量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 data.category.value_counts()

我们进行可视化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 #importing the module from wordcloud library
 from wordcloud import WordCloud
 import matplotlib.pyplot as plt
 
 #creating a text from the category  column by taking only the 2nd part of the category. 
 text = " ".join(cat.split()[1] for cat in data.category)
 
 #generating the cloud
 word_cloud = WordCloud(collocations = False, background_color = 'black').generate(text)
 plt.imshow(word_cloud, interpolation='bilinear')
 plt.axis("off")
 plt.show()

该图表显示了频率最高的所有类别。我们也可以用这个图从文本中找到经常出现的单词。

总结

数据可视化是数据科学中不可缺少的一部分。在数据科学中,我们与数据打交道。手工分析少量数据是可以的,但当我们处理数千个数据时它就变得非常麻烦。如果我们不能发现数据集的趋势和洞察力,我们可能无法使用这些数据。希望上面介绍的的图可以帮助你深入了解数据。

以下是本文的引用

https://plotly.com/python/parallel-coordinates-plot/

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.hexbin.html

Hintze, V. P. A Box Plot-Density Trace Synergism. Am. Stat, (52), 181 (Open Access Journal).

seaborn.pointplot — seaborn 0.12.1 documentation (pydata.org)

seaborn.swarmplot — seaborn 0.12.1 documentation (pydata.org)

Create a sunburst chart in Office — Microsoft Support

Sunburst charts in Python (plotly.com)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DeepHub IMBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
分布(四)利用python绘制小提琴图
小提琴图主要用于显示数据分布及其概率密度。中间的黑色粗条表示四分位数范围,从其延伸的幼细黑线代表 95% 置信区间(以外则为异常点),而白点则为中位数。小提琴图结合了箱线图和密度图的优点,既可以了解数据统计信息,也可以了解数据分布特点。
HsuHeinrich
2024/03/06
5780
分布(四)利用python绘制小提琴图
数据可视化基础与应用-07-数据可视化第二版各种类型图表的绘制优化版
本系列博客为基于《数据可视化第二版》一书的教学资源博客。本文主要是第6章,比较与排序可视化的案例相关。
用户2225445
2024/04/03
3920
数据可视化基础与应用-07-数据可视化第二版各种类型图表的绘制优化版
seaborn可视化入门
【小提琴图】其实是【箱线图】与【核密度图】的结合,【箱线图】展示了分位数的位置,【小提琴图】则展示了任意位置的密度,通过【小提琴图】可以知道哪些位置的密度较高。 小提琴图的内部是箱线图(有的图中位数会用白点表示,但归根结底都是箱线图的变化);外部包裹的就是核密度图,某区域图形面积越大,某个值附近分布的概率越大。 通过箱线图,可以查看有关数据的基本分布信息,例如中位数,平均值,四分位数,以及最大值和最小值,但不会显示数据在整个范围内的分布。如果数据的分布有多个峰值(也就是数据分布极其不均匀),那么箱线图就无法展现这一信息,这时候小提琴图的优势就展现出来了!
用户2225445
2022/11/12
9790
seaborn可视化入门
关于Python可视化Dash工具—plotly中级图表
Plotly Express是对 Plotly.py 的高级封装,内置了大量实用、现代的绘图模板,用户只需调用简单的API函数,即可快速生成漂亮的互动图表,可满足90%以上的应用场景。
python与大数据分析
2022/03/11
9990
Python数据处理从零开始----第四章(可视化)(16)一文解决小提琴图violin plot
(1)输入数据 所使用的是经典的iris数据, 包括有sepal_length, sepal_width, petal_length,petal_width和 species五个变量,其中前四个为数字变量,最后一个为分类变量 import seaborn as sns df = sns.load_dataset('iris') df.head() Out[25]: sepal_length sepal_width petal_length petal_width species 0
用户1359560
2020/02/18
8470
Python数据处理从零开始----第四章(可视化)(16)一文解决小提琴图violin plot
数据可视化(16)-Seaborn系列 | 变量关系组图pairplot()
案例代码已上传:Github https://github.com/Vambooo/SeabornCN
数据分析可视化
2019/10/02
2.7K0
数据可视化(16)-Seaborn系列 | 变量关系组图pairplot()
Python数据处理从零开始----第四章(可视化)(17)一文解决箱型图box plot
Boxplot是对数据分布进行可视化的绝佳方法。但是,请注意,箱型图可以隐藏单个数据的值。因此,强烈建议在箱线图中显示所有观察结果值。而如果有许多观察结果,小提琴图可能是一个有趣的选择。 (15)在箱型图上添加数据点
用户1359560
2020/02/18
1.1K0
Python数据处理从零开始----第四章(可视化)(17)一文解决箱型图box plot
我用Python的Seaborn库,绘制了15个超好看图表!
Seaborn是一个基于Python语言的数据可视化库,它能够创建高度吸引人的可视化图表。
小F
2023/08/21
9420
我用Python的Seaborn库,绘制了15个超好看图表!
使用Seaborn进行房价数据可视化
Seaborn 是一个出色的数据可视化库,它让我们的生活变得轻松。首先,您应该在编辑器中键入以下命令:
CDA数据分析师
2019/10/21
1.6K1
使用Seaborn进行房价数据可视化
详解seaborn可视化中的kdeplot、rugplot、distplot与jointplot
seaborn是Python中基于matplotlib的具有更多可视化功能和更优美绘图风格的绘图模块,当我们想要探索单个或一对数据分布上的特征时,可以使用到seaborn中内置的若干函数对数据的分布进行多种多样的可视化。
派大星的数据屋
2022/04/03
5.2K0
详解seaborn可视化中的kdeplot、rugplot、distplot与jointplot
数据可视化(11)-Seaborn系列 | 小提琴图violinplot()
小提琴形图(violin plot)的作用与盒形图(box plot)和whidker plot的作用类似,它显示了一个或多个分类变量的几个级别的定量数据的分布,我们可以通过观察来比较这些分布。与盒形图不同,因为盒形图的所有绘图组件都对应于实际数据点,小提琴形图具有底层分布的核密度估计。
数据分析可视化
2019/10/02
13.5K0
数据可视化(11)-Seaborn系列 | 小提琴图violinplot()
如何使用Pandas和Matplotlib进行数据探索性可视化的最佳实践
数据可视化是数据分析中不可或缺的一环,它帮助我们更好地理解数据、发现趋势和模式,并有效地传达我们的发现。在Python领域,Pandas和Matplotlib是两个非常强大的库,它们提供了丰富的功能来进行数据分析和可视化。本文将介绍如何结合使用Pandas和Matplotlib进行数据探索性可视化的最佳实践。
一键难忘
2024/07/08
2730
一文爱上可视化神器Plotly_express
一文爱上可视化神器plotly_express目前使用和见识过最棒的可视化库。必须爱上它❤️
皮大大
2020/10/16
4.1K0
一文爱上可视化神器Plotly_express
这40个Python可视化图表案例,强烈建议收藏!
不过有些小伙伴也会遇到不少问题,比如选择何种图表,以及如何制作,代码如何编写,这些都是问题!
小F
2021/09/14
4.4K0
6个令人称赞的Python可视化库
今天给大家介绍6个Python可视化库:matplotlib、seaborn、plotly、Bokeh、altair、pygal
皮大大
2024/12/14
4410
plotly-express-25-36张图爱上plotly_express
Plotly_Express是新一代的高级可视化神器,它是plotly.py的高级封装,内置了大量实用、现代的绘图模板。
皮大大
2021/03/27
1.7K0
Seaborn的15种可视化图表详解
可视化是以图形形式表示数据或信息的过程。在本文中,将介绍Seaborn的最常用15个可视化图表
deephub
2023/08/30
4550
Seaborn的15种可视化图表详解
数据可视化基础与应用-04-seaborn库从入门到精通03
本系列是数据可视化基础与应用的第04篇seaborn,是seaborn从入门到精通系列第3篇。本系列的目的是可以完整的完成seaborn从入门到精通。主要介绍基于seaborn实现数据可视化。
用户2225445
2024/03/26
6890
数据可视化基础与应用-04-seaborn库从入门到精通03
数据可视化第二版-03部分-08章-分布
本系列博客为基于《数据可视化第二版》一书的教学资源博客。本文主要是第8章,分布可视化的案例相关。
用户2225445
2023/10/16
2550
数据可视化第二版-03部分-08章-分布
全面解析Python中的数据可视化与交互式分析工具
数据可视化是数据分析过程中不可或缺的一部分,通过图表和图形展示数据可以帮助我们更直观地理解和解读数据。在Python领域,存在众多用于数据可视化和交互式分析的强大工具。本篇文章将介绍几种主流的Python数据可视化库:Matplotlib、Seaborn、Plotly和Bokeh,并通过代码实例展示其基本用法和优势。
一键难忘
2024/08/18
3870
推荐阅读
相关推荐
分布(四)利用python绘制小提琴图
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验