首页 / Python3 入门教程 / 数据可视化:matplotlib/pyecharts

Python3 入门教程

数据可视化:matplotlib/pyecharts

本教程共 70 篇 · 第 67 篇 · 更新于 2026-07-22 · 约 5 分钟阅读

PythonPython3 入门教程matplotlibpyecharts数据可视化

67. 数据可视化:matplotlib/pyecharts

本节目标:学会用 matplotlib 画基础统计图表,用 pyecharts 生成交互式网页图表,让数据会说话。

数据表格密密麻麻,人眼很难抓住重点。把数据转成图表,趋势、对比、分布立刻一目了然。Python 的可视化生态极其丰富,这节介绍两个最常用的库:matplotlib 和 pyecharts。

matplotlib:绘图基石

matplotlib 是 Python 最老牌、最通用的绘图库,几乎成了数据可视化的行业标准。它的 API 设计参照 MATLAB,功能强大但略显繁琐。

安装:

pip install matplotlib

折线图

import matplotlib.pyplot as plt

months = ['1月', '2月', '3月', '4月', '5月', '6月']
sales = [120, 150, 180, 170, 210, 240]

plt.figure(figsize=(8, 4))
plt.plot(months, sales, marker='o', linestyle='-', color='b', label='销售额')
plt.title('上半年销售趋势')
plt.xlabel('月份')
plt.ylabel('万元')
plt.legend()
plt.grid(True)
plt.savefig('sales.png', dpi=150)
plt.show()

plt.plot() 是最核心的函数,marker 设置数据点样式,linestyle 设置线型,color 设置颜色。plt.savefig() 把图存成文件,plt.show() 弹窗显示。

柱状图和水平条形图

categories = ['产品A', '产品B', '产品C', '产品D']
values = [320, 450, 280, 390]

plt.figure(figsize=(6, 4))
plt.bar(categories, values, color=['coral', 'skyblue', 'lightgreen', 'gold'])
plt.title('各产品销量对比')
plt.ylabel('件')
for i, v in enumerate(values):
    plt.text(i, v + 10, str(v), ha='center')
plt.show()

水平条形图把 plt.bar() 换成 plt.barh(),适合类别名称较长的情况。

散点图和直方图

import numpy as np

# 散点图
x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50)
sizes = 1000 * np.random.rand(50)

plt.scatter(x, y, c=colors, s=sizes, alpha=0.5)
plt.title('随机散点')
plt.show()

# 直方图
data = np.random.randn(1000)
plt.hist(data, bins=30, edgecolor='black')
plt.title('数据分布')
plt.show()

组合子图

fig, axes = plt.subplots(1, 2, figsize=(10, 4))

axes[0].plot(months, sales, marker='o')
axes[0].set_title('折线图')

axes[1].bar(categories, values)
axes[1].set_title('柱状图')

plt.tight_layout()
plt.show()

subplots() 一次性创建多个子图,axes 是一个数组,每个元素对应一个坐标轴。

Tip

matplotlib 默认不支持中文,标题可能显示成方框。在代码开头加上:

plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

pyecharts:交互式网页图表

matplotlib 生成的图是静态图片,适合放在报告里。如果你需要在网页上展示可交互的图表(鼠标悬停显示数值、缩放、切换数据系列),pyecharts 是绝佳选择。

它基于百度开源的 ECharts,用 Python 语法配置,最终生成 HTML + JavaScript。

安装:

pip install pyecharts

基础用法

from pyecharts.charts import Bar
from pyecharts import options as opts

bar = Bar()
bar.add_xaxis(['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'])
bar.add_yaxis('商家A', [5, 20, 36, 10, 75, 90])
bar.add_yaxis('商家B', [15, 25, 16, 55, 48, 8])
bar.set_global_opts(title_opts=opts.TitleOpts(title='商品销量'))
bar.render('bar_chart.html')

运行后生成一个 HTML 文件,用浏览器打开就能看到带交互效果的柱状图。

链式调用风格

pyecharts 也支持更紧凑的链式写法:

from pyecharts.charts import Line
from pyecharts import options as opts

line = (
    Line()
    .add_xaxis(['周一', '周二', '周三', '周四', '周五'])
    .add_yaxis('最高气温', [22, 24, 28, 26, 30])
    .add_yaxis('最低气温', [12, 14, 16, 15, 18])
    .set_global_opts(
        title_opts=opts.TitleOpts(title='一周气温变化'),
        tooltip_opts=opts.TooltipOpts(trigger='axis')
    )
)
line.render('line_chart.html')

常用图表类型

from pyecharts.charts import Pie, Map

# 饼图
pie = (
    Pie()
    .add('', [('苹果', 30), ('香蕉', 25), ('橙子', 20), ('葡萄', 15), ('其他', 10)])
    .set_global_opts(title_opts=opts.TitleOpts(title='水果销量占比'))
)
pie.render('pie_chart.html')
Note

pyecharts 默认从 CDN 加载 ECharts 的 JavaScript 文件。如果要在离线环境使用,需要配置 pyecharts.globals.CurrentConfig.ONLINE_HOST 指向本地资源。

matplotlib vs pyecharts 怎么选

维度matplotlibpyecharts
输出格式静态图片(PNG/PDF/SVG)交互式 HTML
适用场景论文、报告、数据探索网页、大屏、数据看板
学习曲线中等,API 较底层简单,配置化
自定义程度极高,可控制每个像素中等,依赖 ECharts 内置能力

日常分析用 matplotlib 快速出图,需要做演示或网页展示时切到 pyecharts。

小结

  • matplotlib 是 Python 可视化的基础,plotbarscatterhist 覆盖大部分需求。
  • subplots() 组合多个图表,rcParams 解决中文显示问题。
  • pyecharts 生成交互式 HTML 图表,链式调用简洁优雅。
  • 选库看场景:静态报告用 matplotlib,网页交互用 pyecharts。

来源:参考了 runoob「Python pyecharts」、liaoxuefeng「17.1. Pillow」等,改写后所得。