python绘图百宝箱,适合python数据分析绘图学习,或者二次开发。
- 功能齐全,适应广泛 涵盖了24种静态图,动态折线,动态排名,还有函数曲线绘制功能 上班族做ppt添加一些新颖的数据分析图表用的到 函数曲线支持自定义方程,还可以用来教小孩可视化的方式学数学
2.开箱即用,方便上手 windows+python3.13.1的环境下全部验证跑通过,配置好后开箱即可运行看到效果; 依赖的库可以直接运行内部的下载脚本安装; 内部易出错位置有清晰注释,方便学习上手,二次开发
- 保证已安装python环境,版本最好是Python 3.13.1, 这个版本上已全部验证过,运行效果截图已放到result/目录下
- 代码解压后,首选运行 python ./install.py, 即会自动安装所有依赖的库
- 安装完毕后,运行,python ./ui.py,即可完成程序加载,看到主界面演示各种绘图功能
- 二次开发的情况,需要自己修改对应源码, 静态绘图是graph.py, 动态绘图是dynamic.py, 函数绘图是curves.py
- 程序自带了部分数据集,在dataset目录中可以使用,方便二次开发调试及验证
-
数据分析
数据分析是有针对性的收集、加工、整理数据并采用统计、挖掘等技术对数据进行探索、分析、呈现和解释的科学
作为数据分析师,不管是用 Python 语言、Excel、SPSS或其他的商业智能工具,工具只是达成目标的手段,数据思维是核心技能,从实际业务问题出发到最终发现数据中的商业价值是终极目标 -
直方图(histogram)
适用于描述连续数据的集中趋势和离散程度,主要用来展示数据的分布情况,每个柱子表示一个区间内的数据频率
-
柱状图(bar)
适用于展示分类数据的计数、频率或其他度量,主要用来做差异比较,不同类别之间的数值大小
-
饼图(pie)
表示占比,要注意变种有很多,可以是多环图,嵌套饼图(表示大类占比,大类中的各个子类占比等等)等。也可以使用饼图和直方图结合。
-
热力图(heatmap)
通过颜色变化展示数据密度、分布及变化趋势的可视化工具,有很高的空间利用率,色块可以紧凑排列,颜色的深度 可以跨越较大数据范围,并且人类本身对颜色的理解要由于对数字的理解
-
箱线图(boxplot)
通过数据四分位数形成的一种可视化数据偏态尾重分布,离群点的方法。主要价值在于对异常值有耐抗性,箱体集中表示了50%的数据范围,异常值以点的形式表示 箱线图的理解首先要理解四分位数。 箱体(Box):箱体的底部表示 Q1。箱体的顶部表示 Q3。箱体的中间线表示中位数(Q2)。 须(Whiskers):须表示数据的上下边界,通常延伸到 Q1−1.5×IQR 和 Q3+1.5×IQR 的最远数据点。 异常值(Outliers):须之外的数据点被认为是异常值,通常用点(dots)表示。
-
小提琴图(violin plot)
一种用于展示数据分布及其概率密度的图形。这种图形在箱线图的基础上叠加显示了数据的概率密度,形状类似小提琴,因此得名。 该图非常适合用于比较多个组或类别之间的数据分布。通过并排展示多个小提琴图,可以直观地比较不同组之间的数据分布差异,识别其中的相似性和差异性。例如,在基因表达分析中,小提琴图可以用来比较不同实验组之间的基因表达水平。
-
散点矩阵图(pair plot / scatter matrix plot)
是一种用于展示多个变量之间关系的可视化工具。它通过在一个矩阵布局中展示多个变量对的散点图,帮助快速识别变量间的相关性,适用于多变量关系分析,数据探索性分析,异常值检测,市场调研金融等领域的群体比较等方面。
-
六边形分箱图(Hexagonal Binning)
一种用于可视化大量散点数据的图形工具,适用于在二维空间中显示数据点的密度。它结合了散点图和直方图的特点,通过将数据点聚合到六边形单元格中,并用颜色深浅表示每个单元格内的数据点数量,从而有效地展示数据的分布情况。具有以下价值:
- 高效处理高密度数据:在面对大量数据点时,传统的散点图可能会因为数据点的重叠而难以解释,而 Hexbin 图能够有效地解决这一问题,使数据分布的模式更加清晰可见。
- 空间利用率高:六边形的形状使得它们在平面上比矩形更紧密地排列,减少了空隙,从而提高了数据的空间利用率。
- 平滑的密度估计:六边形的形状使得相邻的单元之间的连接更加自然,有助于在视觉上呈现数据的分布趋势。
- 适应性强:可以处理大量数据点,尤其是在数据点数量较多时,Hexbin 图能够有效地展示数据的整体分布,而不会因为数据点的重叠而导致信息丢失
-
面积图(area chart)
面积图不仅显示数据的变化趋势,还通过填充区域强调了数据的模式。这使得读者可以更直观地理解数据的整体趋势,区别于折线图,堆积面积图和百分比堆积面积图可以清晰地展示部分与整体的关系。这对于理解不同类别在总体中的占比非常有用。
-
桑基图(Sankey diagram)
桑基能量分流chart图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融等数据的可视化分析。因1898年Matthew Henry Phineas Riall Sankey绘制的“蒸汽机的能源效率图”而闻名,此后便以其名字命名为“桑基图
-
气泡图(Bubble Chart)
气泡图能够同时展示三个维度的数据:x轴、y轴和气泡的大小。这使得它在有限的空间内可以展示更多的信息。例如,在一个气泡图中,x轴可以表示时间,y轴可以表示销售额,气泡的大小可以表示利润。
通常用于数据集合的分布对比。 -
韦恩图(Venn Diagram)
集合之间的包含关系
-
upset图(UpSetPlot)
UpSetPlot 是一种用于可视化多个集合之间交集和并集关系的图表。它特别适合展示多个集合之间的复杂关系,尤其是在集合数量较多时,传统的维恩图(Venn Diagram)会变得难以理解和绘制。UpSetPlot 通过条形图的形式展示了各个集合及其交集的大小,使得数据更加清晰易读取.

-
动态排名变化图
- 动态折线图
- 词云图
-
维诺图(Voronoi Diagram)
又称为泰森多边形(Thiessen Polygon)或狄利克雷图(Dirichlet Tessellation),是一种用于将平面划分为多个区域的几何结构。维诺图是 Delaunay 三角剖分的对偶图。通过构造 Delaunay 三角剖分,然后连接相邻三角形的外接圆圆心,可以生成维诺图。 具体以下特点:
- 多边形划分:维诺图将平面划分为多个多边形区域,每个区域包含一个生成元。
- 最近邻原则:每个区域内的点到其生成元的距离都小于到其他生成元的距离。
- 边界特性:多边形边界上的点到生成此边界的两个生成元的距离相等。
- 顶点和边:维诺图的顶点是三个生成元的外接圆圆心,边是两个生成元的垂直平分线。
- 空圆特性:每个区域内的生成元是形成三边的三点构成的三角形的外接圆圆心,且这些外接圆内部不含任何除这三点之外的顶点。 维诺图在多个领域有广泛应用,包括:
- 地理信息系统(GIS):用于划分地理空间,确定服务设施的服务范围。比如:荷兰气候学家 A·H·Thiessen 提出了一种方法,将整个区域划分为多个凸多边形,每个多边形内只有一个气象站,该多边形内的降雨量以该气象站的数据为准。这种方法可以帮助气象学家估算整个区域的降雨量分布。
- 无线通信:优化无线信号的传输范围和覆盖范围。
- 路径规划:在机器人导航中,广义维诺图(GVD)用于减少路径搜索维度,比如:维诺图的边可以作为机器人路径规划的参考,帮助机器人避开障碍物。通过计算障碍物周围的维诺边,可以构建一个避障区域,然后使用最短路径算法来计算避开障碍物的路径.
维诺图里面的虚线的理解: 由于边界位置上无法整个图无法闭环,边可以无限延伸出去,但现实意义中不会无限延伸,总有物理的限制边界,所以虚线表示了理论上可以无限延伸,但实际上会有限制的边界位置上的“边”.
-
金字塔图(Pyramid Chart)
金字塔图是一种图表,通常用于展示数据的层次结构或对比关系。它由多个水平条形图组成,每个条形图代表一个层次或类别,条形图的宽度可以表示该层次的大小或重要性。
-
漏斗图(Funnel Chart)
漏斗图是一种图表,用于展示数据在多个阶段的逐渐减少或转化过程。它通常用于表示销售漏斗、客户转化流程、网站流量分析等场景
-
矩形树图(Treemap)
所有矩形的面积之和代表了总体数据。各个小矩形的面积表示每个子项的占比,矩形面积越大,表示子数据在整体中的占比越大.
矩形树图适合展现具有层级关系的数据,能够直观体现同级之间的比较(矩形树图使用不同颜色和大小的长方形来显示数据的层次结构) -
人物关系图(Relation map)
-
帕累托图(Pareto Chart)
一种基于帕累托原理(80/20 法则)的图表工具,用于识别和优先处理最重要的因素。帕累托原理指出,大约 80% 的结果往往由 20% 的原因引起。帕累托图的主要价值包括:
- 识别关键因素:帮助快速识别对问题影响最大的关键因素,从而实现有针对性的解决。
- 优化资源分配:通过识别关键因素,可以更有效地分配有限资源,提高资源利用率。
- 改进过程:发现过程中的瓶颈和问题,从而有针对性地改进过程,提高效率和质量。
- 决策支持:为管理决策提供数据支持,帮助更好地理解和分析问题,从而做出更明智的决策
-
对偶图
计算几何中,对偶图是一种将一个图的顶点和边转换为另一个图的边和顶点的方法
-
概率密度/概率
概率密度函数(Probability Density Function, PDF)的值本身不是概率,而是概率的密度。这意味着在连续随机变量的情况下,PDF 的值表示在某个特定值附近的单位长度内的概率。 概率P和概率密度f(x)的关系就是:
$$P(a \leq X \leq b) = \int_a^bf(x),dx$$ -
核密度估计(Kernel Density Estimation, KDE)
由给定样本集合求解随机变量的分布密度函数问题是概率统计学的基本问题之一。 解决这一问题的方法包括参数估计和非参数估计。
- 参数估计:
参数估计方法中,分为参数回归分析和参数判别分析。
- 参数回归分析:人们假定数据分布符合某种特定的性态,如线性、可化线性或指数性态等,然后在目标函数族中寻找特定的解,即确定回归模型中的未知参数,适用于因变量为连续变量的情况,如预测房价、销售额等
- 参数判别分析:用于根据一组特征将数据分配到不同的类别中。它假设每个类别的数据来自多元正态分布,并通过估计每个类别的均值和协方差矩阵来建立判别规则,适用于因变量为离散类别的情况,如分类鸢尾花种类、识别手写数字等
- 非参数估计:参数模型的这种基本假定与实际的物理模型之间常常存在较大的差距,这些方法并非总能取得令人满意的结果,Rosenblatt和Parzen提出了非参数估计方法,即核密度估计方法。由于核密度估计方法不利用有关数据分布的先验知识,对数据分布不附加任何假定,是一种从数据样本本身出发研究数据分布特征的方法
- KDE就是在概率论中用来估计未知的密度函数,属于非参数检验方法之一。
核密度函数的原理比较简单,在我们知道某一事物的概率分布的情况下,如果某一个数在观察中出现了,我们可以认为这个数的概率密度很大,和这个数比较近的数的概率密度也会比较大,而那些离这个数远的数的概率密度会比较小。
实现上是采用平滑的峰值函数(“核”)来拟合观察到的数据点,从而对真实的概率分布曲线进行模拟。- 核密度估计的公式为:
$$\hat{f}(x) = \frac{1}{nh} \sum_{i=1}^{n} K(\frac{x - x_i}{h})$$
$\hat{f}(x)$ :是估计的概率密度函数
$n$ :是数据点的数量
$x_i$ :是第i个随机数据点
$h$ :是带宽,也叫窗口,控制核函数的宽度
$K$ :是核函数,通常是一个非负的、对称的函数,有高斯核、均匀核等函数
注意!!! 这里的核函数概念和低维映射高维用到的核函数不是一个概念!!
- 核密度估计的公式为:
- 参数估计:
参数估计方法中,分为参数回归分析和参数判别分析。
-
核函数(kernel function)
“你在你的一生中可能会经历很多变故,可能会变成完全不同的另一个人,但是这个世界上只有一个你,我要怎样才能把不同的“你”分开呢?最直观的方法就是增加“时间”这个维度,虽然这个地球上只有一个你,这个你是不可分割的,但是“昨天在中国的你”和“今天在美国的你”在时间+空间这个维度却是可以被分割的。” 可以通过增加维度,解决在原始空间上无法线性可分的问题,如果原始空间是有限维的,那么一定存在一个高维特征空间使样本可分 kernel其实就是帮我们省去在高维空间里进行繁琐计算的“简便运算法”。甚至,它能解决无限维空间无法计算的问题
-
Mercer定理
指任何半正定的函数都可以作为核函数。具体来说,Mercer定理表明,如果一个函数是半正定的(即对于任何输入向量,该函数值为非负),那么它可以被视为一个核函数。这意味着这个函数可以用来计算两个向量在某个高维空间中的内积,而不需要显式地将数据映射到这个高维空间中
-
向量内积(Dot Product) / 外积(Cross Product)
内积本质衡量两个向量在方向上的相似程度。它可以通过向量的模长和它们之间的夹角来表示 外积本质是生成一个与两个原始向量都垂直的向量,其模长等于两个原始向量组成的平行四边形的面积。外积的方向遵循右手定则
-
方差优良数学性质的理解
这里的优良主要指的是方便计算和操作。 方差:具有优良的数学性质,如可加性、线性变换的可预测性、非负性等,适合进行进一步的统计分析。 标准差:量纲上和原始数据集一致,便于理解
-
离群数据 (Outliers)
在数据集中明显偏离其他数据点的值。这些数据点可能由于测量误差、数据录入错误、自然变异或其他异常情况而显著不同于其他数据,有以下类型:
- 全局离群数据(Global Outliers):在整个数据集中显得异常的数据点。
- 上下文离群数据(Contextual Outliers):在特定上下文中显得异常的数据点,但在其他上下文中可能不异常。
- 集体离群数据(Collective Outliers):一组数据点在整体上显得异常,但单个数据点可能不异常。
-
四分位数 ( Quartiles )
数据的四分位数(Quartiles)是具体的数值,而不是一个范围。四分位数将数据集分为四个部分,每个部分包含25%的数据点 第一四分位数(Q1):数据集中25%的数据小于或等于这个值。 第二四分位数(Q2):即中位数,数据集中50%的数据小于或等于这个值。 第三四分位数(Q3):数据集中75%的数据小于或等于这个值。 四分位距(IQR):表示数据中间50%的范围,计算公式为 IQR=Q3−Q1; 异常值范围:通常定义为小于 Q1−1.5×IQR 或大于 Q3+1.5×IQR 的值 四分位数有以下作用:
- 描述数据分布:通过 Q1、Q2 和 Q3,可以了解数据的集中趋势和离散程度。
- 检测异常值:通过 IQR,可以识别数据中的异常值。
- 比较不同数据集:通过四分位数,可以比较不同数据集的分布情况。 四分位数的计算方法主要依赖插值法,这个思想可以借鉴,一种通过已知点的值以及值间的距离来估算未知值的方法
- 找到位置 p 的整数部分 ⌊p⌋ 和向上取整部分 ⌈p⌉。
- 使用这两个位置的值进行线性插值,得到四分位数的估计值。(四分位数值=位置⌊p⌋的值+(p−⌊p⌋)×(位置⌈p⌉的值−位置⌊p⌋的值))
-
虚拟变量(也称为独热编码,One-Hot Encoding)
一种将分类变量转换为数值变量的方法。每个分类变量的类别(category)会被转换为一个独立的列,列中只有有 0 和 1 两种值,表示该类别是否出现
-
多重共线性(Multicollinearity)
统计学和机器学习中一个重要的概念,指的是在回归模型中,两个或多个解释变量(自变量)之间存在高度相关性。这种相关性可能导致模型的估计结果不稳定,参数解释不准确,甚至影响模型的预测性能。
-
VIF
检测多重共线性的常用指标。VIF 值越高,表示该变量与其他变量之间的共线性越强。
-
变异系数(Coefficient of Variation, CV)
一种统计度量,用于描述数据的相对离散程度。它是标准差(Standard Deviation, SD)与均值(Mean)的比值,通常以百分比的形式表示.
$$ CV= \frac{SD(Standard,Deviation)}{Mean} * 100% $$ 变异系数的应用场景:- 质量控制:在生产过程中,使用变异系数来评估产品质量的稳定性。较低的变异系数表示产品质量较为一致。
- 生物统计:在生物实验中,变异系数用于评估实验结果的重复性和可靠性。较低的变异系数表示实验结果较为稳定。
- 经济分析:在经济数据的分析中,变异系数用于比较不同经济指标的波动性。较高的变异系数表示经济指标的波动性较大。
- 投资分析:在投资组合的分析中,变异系数用于评估不同投资标的的波动性。较低的变异系数表示投资标的的波动性较小,风险较低
-
峰度(Kurtosis)
用来描述数据分布的“峰态”或“尖锐程度”。一个分布的峰度越高,意味着其峰值越尖锐,尾部越厚;反之,则分布更平缓,尾部较薄。标准正态分布的峰度为3,称为“中峰”。
超峰度(Leptokurtic):当峰度大于3时,表示数据分布比标准正态分布更尖锐,尾部更重。这可能表明存在极端值或异常值的可能性较高。
低峰度(Platykurtic):如果峰度小于3,说明数据分布比标准正态分布更平坦,尾部较轻。这可能意味着数据更加均匀分布,极端值出现的概率较低 -
左偏分布(Negative Skewness)
定义:左偏分布是指数据的左尾(较小值)比右尾(较大值)更长或更重。在这种分布中,均值(Mean)通常小于中位数(Median),中位数小于众数(Mode)。
峰值位置:峰值通常位于数据的右侧,即较大的值区域。这是因为数据的主体集中在右侧,而左尾较长。
图形特征:在左偏分布中,图形的左尾较长,峰值偏向右侧。
左偏分布:峰值在右侧,均值 < 中位数 < 众数 -
右偏分布(Positive Skewness)
定义:右偏分布是指数据的右尾(较大值)比左尾(较小值)更长或更重。在这种分布中,均值(Mean)通常大于中位数(Median),中位数大于众数(Mode)。
峰值位置:峰值通常位于数据的左侧,即较小的值区域。这是因为数据的主体集中在左侧,而右尾较长。
图形特征:在右偏分布中,图形的右尾较长,峰值偏向左侧。
右偏分布:峰值在左侧,均值 > 中位数 > 众数