数据可视化(Matplotlib和pyecharts)
一 常见图形概念及使用
图表类型 | 适用场景 | 核心特点 |
---|---|---|
柱状图(bar) | 比较不同类别数据(如各地区销售额对比)、时间序列分析(离散时间) | 高度反映数值大小,支持横向/纵向展示,可叠加分组 |
折线图(plot) | 连续数据趋势比较(适合展示随时间的变化,如股票价格走势、用户增长趋势)、多变量趋势比较 | 通过线段连接数据点,强调连续性变化 |
散点图(scatter) | 分析变量间相关性(如身高与体重关系),聚类分析初步观察 | 用点分布揭示数据模式,可添加回归线 |
饼图/环形图(pie) | 显示比例分布(如市场份额占比)、简单分类(不适合多分类情况) | 扇形面积代表比例,环形图可突出中心信息 |
热力图HeatMap() | 矩阵数据密度展示(如用户活跃时段分布、网页点击热区) | 颜色深浅映射数值大小,适合高维度数据聚类 |
箱线图(boxplot) | 数据分布统计(如收入中位数、异常值检测)、实验的分组之间结果比较 | 展示最小值、Q1、中位数、Q3、最大值,识别数据离散度 |
雷达图(polar) | 多维能力评估(如技能评分、产品属性对比) | 多边形顶点表示维度,面积反映综合能力 |
地理地图(pyecharts) | 空间数据可视化(如疫情分布、物流网络) | 结合经纬度坐标,支持气泡图、热力层叠加 |
-
选择原则:
- 明确目标: 趋势分析用折线图,占比用饼图,分布用散点/箱线图
- 简化维度: 避免过度复杂(如3D图表可能降低可读性)
- 颜色规范: 使用差异明显的色系,色盲友好(避免红绿对比)
-
热力图(Heatmap)
- 概念:热力图是一种以颜色深浅来表示数据大小的二维图形。颜色通常从浅到深表示数值从低到高,或者相反。
- 使用场景
- 二维数据展示 :用于展示二维数据矩阵中的数值分布情况。例如,展示不同时间段不同地区的销售额热度,或者基因表达矩阵中基因在不同样本中的表达水平。
- 密度展示 :可以用于展示数据点的密度分布。例如,在地理信息系统(GIS)中展示人口密度。
二、Matplotlib
(一)Matplotlib 简介
Matplotlib 是 Python 中最常用的绘图库之一,它提供了丰富的绘图功能,可以用于绘制各种静态、动态、交互式的二维和三维图形。
(二)基本图形绘制
import matplotlib.pyplot as pltimport numpy as np# 生成数据x = np.linspace(0, 10, 100)y = np.sin(x)# 创建画布与子图fig, ax = plt.subplots(figsize=(8, 4))# 绘制折线图# linewidth(线宽)、markersize(标记大小)、alpha(透明度)# fontsize 和 fontfamily 用于设置标题和标签的字体大小和字体系列。ax.plot(x, y, label='sin(x)', color='blue', linestyle='--')ax.set_title("Sine Wave") # 标题ax.set_xlabel("X Axis") # X轴标签ax.set_ylabel("Y Axis") # Y轴标签ax.legend() # 显示图例ax.grid(True, linestyle=':') # 网格线plt.show() # 展示图形
- 多子图与样式控制
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 6))# 第一个子图:柱状图axes[0,0].bar(['A', 'B', 'C'], [20, 35