文总结了在数据分析和可视化中最有用的 50 个 Matplotlib 图表。这些图表列表容许您使用 python 的 matplotlib 和 seaborn 库选择要显示的可视化对象。python
这些图表根据可视化目标的 7 个不一样情景进行分组。例如,若是要想象两个变量之间的关系,请查看“关联”部分下的图表。或者,若是您想要显示值如何随时间变化,请查看“变化”部分,依此类推。数组
有效图表的重要特征:分布式
在不歪曲事实的状况下传达正确和必要的信息。工具
设计简单,您没必要太费力就能理解它。性能
从审美角度支持信息而不是掩盖信息。大数据
信息没有超负荷。人工智能
01 关联(Correlation)设计
关联图表用于可视化 2 个或更多变量之间的关系。也就是说,一个变量如何相对于另外一个变化。rest
1. 散点图(Scatter plot)对象
散点图是用于研究两个变量之间关系的经典的和基本的图表。若是数据中有多个组,则可能须要以不一样颜色可视化每一个组。您可使用 plt.scatterplot() 方便地执行此操做。
2. 带边界的气泡图(Bubble plot with Encircling)
有时,您但愿在边界内显示一组点以强调其重要性。在这个例子中,你从数据框中获取记录,并用 encircle() 来使边界显示出来。
3. 带线性回归最佳拟合线的散点图(Scatter plot with linear regression line of best fit)
若是你想了解两个变量如何相互改变,那么最佳拟合线就是经常使用的方法。下图显示了数据中各组之间最佳拟合线的差别。要禁用分组并仅为整个数据集绘制一条最佳拟合线,请从 sns.lmplot() 调用中删除 hue ='cyl' 参数。
针对每列绘制线性回归线或者,能够在其每列中显示每一个组的最佳拟合线。能够经过在 sns.lmplot() 中设置 col=groupingcolumn 参数来实现,以下:
4. 抖动图(Jittering with stripplot)
一般,多个数据点具备彻底相同的 X 和 Y 值。结果,多个点绘制会重叠并隐藏。为避免这种状况,请将数据点稍微抖动,以便您能够直观地看到它们。
使用 seaborn 的 stripplot() 很方便实现这个功能。
5. 计数图(Counts Plot)
避免点重叠问题的另外一个选择是增长点的大小,这取决于该点中有多少点。所以,点的大小越大,其周围的点的集中度越高。
6. 边缘直方图(Marginal Histogram)
边缘直方图具备沿 X 和 Y 轴变量的直方图。这用于可视化 X 和 Y 之间的关系以及单独的 X 和 Y 的单变量分布。这种图常常用于探索性数据分析(EDA)。
7. 边缘箱形图(Marginal Boxplot)
边缘箱图与边缘直方图具备类似的用途。然而,箱线图有助于精肯定位 X 和 Y 的中位数、第 25 和第 75 百分位数。
8. 相关图(Correllogram)
相关图用于直观地查看给定数据框(或二维数组)中全部可能的数值变量对之间的相关度量。
9. 矩阵图(Pairwise Plot)
矩阵图是探索性分析中的最爱,用于理解全部可能的数值变量对之间的关系。它是双变量分析的必备工具。
02 误差(Deviation)
10. 发散型条形图(Diverging Bars)
若是您想根据单个指标查看项目的变化状况,并可视化此差别的顺序和数量,那么散型条形图(Diverging Bars)是一个很好的工具。它有助于快速区分数据中组的性能,而且很是直观,而且能够当即传达这一点。
11. 发散型文本(Diverging Texts)
发散型文本(Diverging Texts)与发散型条形图(Diverging Bars)类似,若是你想以一种漂亮和可呈现的方式显示图表中每一个项目的价值,就可使用这种方法。
12. 发散型包点图(Diverging Dot Plot)
发散型包点图(Diverging Dot Plot)也相似于发散型条形图(Diverging Bars)。然而,与发散型条形图(Diverging Bars)相比,条的缺失减小了组之间的对比度和差别。
13. 带标记的发散型棒棒糖图(Diverging Lollipop Chart with Markers)
带标记的棒棒糖图经过强调您想要引发注意的任何重要数据点并在图表中适当地给出推理,提供了一种对差别进行可视化的灵活方式。
14. 面积图(Area Chart)
经过对轴和线之间的区域进行着色,面积图不只强调峰和谷,并且还强调高点和低点的持续时间。高点持续时间越长,线下面积越大。
03 排序(Ranking)
15. 有序条形图(Ordered Bar Chart)
有序条形图有效地传达了项目的排名顺序。可是,在图表上方添加度量标准的值,用户能够从图表自己获取精确信息。
16. 棒棒糖图(Lollipop Chart)
棒棒糖图表以一种视觉上使人愉悦的方式提供与有序条形图相似的目的。
17. 包点图(Dot Plot)
包点图表传达了项目的排名顺序,而且因为它沿水平轴对齐,所以您能够更容易地看到点彼此之间的距离。
18. 坡度图(Slope Chart)
坡度图最适合比较给定人/项目的“前”和“后”位置。
19. 哑铃图(Dumbbell Plot)
哑铃图表传达了各类项目的“前”和“后”位置以及项目的等级排序。若是您想要将特定项目/计划对不一样对象的影响可视化,那么它很是有用。
04 分布(Distribution)
20. 连续变量的直方图(Histogram for Continuous Variable)
直方图显示给定变量的频率分布。下面的图表示基于类型变量对频率条进行分组,从而更好地了解连续变量和类型变量。
21. 类型变量的直方图(Histogram for Categorical Variable)
类型变量的直方图显示该变量的频率分布。经过对条形图进行着色,能够将分布与表示颜色的另外一个类型变量相关联。
22. 密度图(Density Plot)
密度图是一种经常使用工具,用于可视化连续变量的分布。经过“响应”变量对它们进行分组,您能够检查 X 和 Y 之间的关系。如下状况用于表示目的,以描述城市里程的分布如何随着汽缸数的变化而变化。
23. 直方密度线图(Density Curves with Histogram)
带有直方图的密度曲线聚集了两个图所传达的集体信息,所以您能够将它们放在一个图中而不是两个图中。
24. Joy Plot
Joy Plot 容许不一样组的密度曲线重叠,这是一种可视化大量分组数据的彼此关系分布的好方法。它看起来很悦目,并清楚地传达了正确的信息。它可使用基于 matplotlib 的 joypy 包轻松构建。
注:须要安装 joypy 库
25. 分布式包点图(Distributed Dot Plot)
分布式包点图显示按组分割的点的单变量分布。点数越暗,该区域的数据点集中度越高。经过对中位数进行不一样着色,组的真实定位当即变得明显。
26. 箱形图(Box Plot)
箱形图是一种可视化分布的好方法,记住中位数、第 25 个第 45 个四分位数和异常值。可是,您须要注意解释可能会扭曲该组中包含的点数的框的大小。所以,手动提供每一个框中的观察数量能够帮助克服这个缺点。
例如,左边的前两个框具备相同大小的框,即便它们的值分别是 5 和 47。所以,写入该组中的观察数量是必要的。
27. 包点+箱形图(Dot+Box Plot)
包点+箱形图(Dot+Box Plot)传达相似于分组的箱形图信息。此外,这些点能够了解每组中有多少数据点。
28. 小提琴图(Violin Plot)
小提琴图是箱形图在视觉上使人愉悦的替代品。小提琴的形状或面积取决于它所持有的观察次数。可是,小提琴图可能更难以阅读,而且在专业设置中不经常使用。
29. 人口金字塔(Population Pyramid)
人口金字塔可用于显示由数量排序的组的分布。或者它也能够用于显示人口的逐级过滤,由于它在下面用于显示有多少人经过营销渠道的每一个阶段。
30. 分类图(Categorical Plots)
由 seaborn 库 提供的分类图可用于可视化彼此相关的 2 个或更多分类变量的计数分布。
05 组成(Composition)
31. 华夫饼图(Waffle Chart)
可使用 pywaffle 包 建立华夫饼图,并用于显示更大群体中的组的组成。
注:须要安装 pywaffle 库
32. 饼图(Pie Chart)
饼图是显示组成的经典方式。然而,如今一般不建议使用它,由于馅饼部分的面积有时会变得误导。所以,若是您要使用饼图,强烈建议明确记下饼图每一个部分的百分比或数字。
33. 树形图(Treemap)
树形图相似于饼图,它能够更好地完成工做而不会误导每一个组的贡献。
注:须要安装 squarify 库
34. 条形图(Bar Chart)
条形图是基于计数或任何给定指标可视化项目的经典方式。在下面的图表中,我为每一个项目使用了不一样的颜色,但您一般可能但愿为全部项目选择一种颜色,除非您按组对其进行着色。
06 变化(Change)
35. 时间序列图(Time Series Plot)
时间序列图用于显示给定度量随时间变化的方式。在这里,您能够看到 1949 年 至 1969 年间航空客运量的变化状况。
36. 带波峰波谷标记的时序图(Time Series with Peaks and Troughs Annotated)
下面的时间序列绘制了全部峰值和低谷,并注释了所选特殊事件的发生。
37. 自相关和部分自相关图(Autocorrelation (ACF) and Partial Autocorrelation (PACF) Plot)
自相关图(ACF图)显示时间序列与其自身滞后的相关性。每条垂直线(在自相关图上)表示系列与滞后 0 之间的滞后之间的相关性。图中的蓝色阴影区域是显着性水平。那些位于蓝线之上的滞后是显着的滞后。
那么如何解读呢?
对于空乘旅客,咱们看到多达 14 个滞后跨越蓝线,所以很是重要。这意味着,14 年前的航空旅客交通量对今天的交通情况有影响。
PACF 在另外一方面显示了任何给定滞后(时间序列)与当前序列的自相关,可是删除了滞后的贡献。
38. 交叉相关图(Cross Correlation plot)
交叉相关图显示了两个时间序列相互之间的滞后。
39. 时间序列分解图(Time Series Decomposition Plot)
时间序列分解图显示时间序列分解为趋势,季节和残差份量。
40. 多个时间序列(Multiple Time Series)
您能够绘制多个时间序列,在同一图表上测量相同的值,以下所示。
41. 使用辅助 Y 轴来绘制不一样范围的图形(Plotting with different scales using secondary Y axis)
若是要显示在同一时间点测量两个不一样数量的两个时间序列,则能够在右侧的辅助 Y 轴上再绘制第二个系列。
42. 带有偏差带的时间序列(Time Series with Error Bands)
若是您有一个时间序列数据集,每一个时间点(日期/时间戳)有多个观测值,则能够构建带有偏差带的时间序列。您能够在下面看到一些基于天天不一样时间订单的示例。另外一个关于 45 天持续到达的订单数量的例子。
在该方法中,订单数量的平均值由白线表示。而且计算 95% 置信区间并围绕均值绘制。
43. 堆积面积图(Stacked Area Chart)
堆积面积图能够直观地显示多个时间序列的贡献程度,所以很容易相互比较。
44. 未堆积的面积图(Area Chart UnStacked)
未堆积面积图用于可视化两个或更多个系列相对于彼此的进度(起伏)。在下面的图表中,您能够清楚地看到随着失业中位数持续时间的增长,我的储蓄率会降低。未堆积面积图表很好地展现了这种现象。
45. 日历热力图(Calendar Heat Map)
与时间序列相比,日历地图是可视化基于时间的数据的备选和不太优选的选项。虽然能够在视觉上吸引人,但数值并不十分明显。然而,它能够很好地描绘极端值和假日效果。
注:须要安装 calmap 库
46. 季节图(Seasonal Plot)
季节图可用于比较上一季中同一天(年/月/周等)的时间序列。
07 分组(Groups)
47. 树状图(Dendrogram)
树形图基于给定的距离度量将类似的点组合在一块儿,并基于点的类似性将它们组织在树状连接中。
48. 簇状图(Cluster Plot)
簇状图(Cluster Plot)可用于划分属于同一群集的点。下面是根据 USArrests 数据集将美国各州分为 5 组的表明性示例。此图使用“谋杀”和“攻击”列做为 X 和 Y 轴。或者,您能够将第一个到主要组件用做 X 轴和 Y 轴。
49. 安德鲁斯曲线(Andrews Curve)
安德鲁斯曲线有助于可视化是否存在基于给定分组的数字特征的固有分组。若是要素(数据集中的列)没法区分组(cyl),那么这些线将不会很好地隔离,以下所示。
50. 平行坐标(Parallel Coordinates)
平行坐标有助于可视化特征是否有助于有效地隔离组。若是实现隔离,则该特征可能在预测该组时很是有用。
本文转自大数据分析和人工智能公众号~~