当前位置:首页>python>python常用可视化绘图(附源码及效果)

python常用可视化绘图(附源码及效果)

  • 2026-09-09 17:14:40
python常用可视化绘图(附源码及效果)
今天给大家整理了最常用的二维 、三维绘图方法,每一种都附完整可运行源码,复制粘贴就能用,新手也能快速上手,数据分析、报告展示直接抄作业~
首先安装pyecharts库:
pip install pyecharts
pyecharts 的核心逻辑超简单:初始化图表对象→配置数据 / 样式→生成 html 文件(可直接浏览器打开,支持交互),所有图表都遵循这个思路。

1. 折线图(展示数据趋势变化)

适合时间序列、指标走势分析,支持多折线对比、标注极值,交互时可悬浮看具体数值:

from pyecharts import options as optsfrom pyecharts.charts import Linefrom pyecharts.globals import ThemeType# 数据准备(x轴:月份,y轴:两个产品销量)x_data = ["1月", "2月", "3月", "4月", "5月", "6月"]y1_data = [120, 200, 150, 80, 70, 110]y2_data = [80, 150, 100, 120, 90, 130]# 绘制折线图line = (    Line(init_opts=opts.InitOpts(theme=ThemeType.MACARONS, width="1000px", height="600px"))    .add_xaxis(x_data)    .add_yaxis("产品A", y1_data, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), opts.MarkPointItem(type_="min")]))    .add_yaxis("产品B", y2_data, markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]))    .set_global_opts(title_opts=opts.TitleOpts(title="产品销量趋势图", subtitle="2026年上半年"),                     tooltip_opts=opts.TooltipOpts(trigger="axis"),                     legend_opts=opts.LegendOpts(pos_left="center")))# 生成html文件line.render("折线图.html")

2. 柱状图(对比不同类别数据)

适合多维度数据对比,支持纵向 / 横向、堆叠柱状图,这里以经典纵向对比为例:

from pyecharts import options as optsfrom pyecharts.charts import Barfrom pyecharts.globals import ThemeTypex_data = ["北京", "上海", "广州", "深圳", "杭州"]y_data = [85, 92, 78, 90, 88]bar = (    Bar(init_opts=opts.InitOpts(theme=ThemeType.ROMA, width="1000px", height="600px"))    .add_xaxis(x_data)    .add_yaxis("用户满意度", y_data, color="#FF6347")    .set_global_opts(title_opts=opts.TitleOpts(title="各城市用户满意度调研"),                     xaxis_opts=opts.AxisOpts(name="城市"),                     yaxis_opts=opts.AxisOpts(name="满意度(分)", min_=0, max_=100)))bar.render("柱状图.html")

3. 散点图(展示数据相关性)

适合分析两个变量之间的关联,支持按类别着色,直观区分不同组别:

from pyecharts import options as optsfrom pyecharts.charts import Scatterfrom pyecharts.globals import ThemeTypeimport random# 随机生成测试数据x_data = [random.randint(0, 100) for _ in range(50)]y_data = [random.randint(0, 100) for _ in range(50)]scatter = (    Scatter(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION, width="1000px", height="600px"))    .add_xaxis(x_data)    .add_yaxis("数据组", y_data, symbol_size=10, color="#4169E1")    .set_global_opts(title_opts=opts.TitleOpts(title="数据相关性散点图"),                     xaxis_opts=opts.AxisOpts(name="X变量"),                     yaxis_opts=opts.AxisOpts(name="Y变量"),                     tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{c}")))scatter.render("散点图.html")

4. 饼图(展示数据占比分布)

适合各类别占比分析,支持环形图、南丁格尔图,这里以最常用的环形饼图为例:

from pyecharts import options as optsfrom pyecharts.charts import Piefrom pyecharts.globals import ThemeType# 数据:品类-销售额data = [("食品", 350), ("服装", 280), ("家电", 420), ("美妆", 210), ("其他", 140)]pie = (    Pie(init_opts=opts.InitOpts(theme=ThemeType.LIGHT, width="800px", height="600px"))    .add("", data, radius=["40%", "70%"], label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)"))    .set_global_opts(title_opts=opts.TitleOpts(title="商品品类销售额占比")))pie.render("饼图.html")

5. 热力图(展示数据密度 / 热度)

适合二维数据的热度分布,比如用户行为、地区数据密度,这里以模拟地区热度为例:

from pyecharts import options as optsfrom pyecharts.charts import HeatMapfrom pyecharts.globals import ThemeTypeimport random# 构造数据:[x, y, 热度值]x_data = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]y_data = ["1点", "2点", "3点", "4点", "5点"]data = [[i, j, random.randint(0, 100)] for i in range(7) for j in range(5)]heatmap = (    HeatMap(init_opts=opts.InitOpts(theme=ThemeType.DARK, width="1000px", height="600px"))    .add_xaxis(x_data)    .add_yaxis("热度分布", y_data, data, label_opts=opts.LabelOpts(is_show=True, position="inside"))    .set_global_opts(title_opts=opts.TitleOpts(title="每日时段热度热力图"),                     visualmap_opts=opts.VisualMapOpts(min_=0, max_=100, orient="horizontal", pos_bottom="10px")))heatmap.render("热力图.html")
6. 3D 散点图(展示三维数据空间分布)
from pyecharts import options as optsfrom pyecharts.charts import Scatter3Dfrom pyecharts.globals import ThemeTypeimport random# 构造三维数据:[x, y, z]data = [[random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)] for _ in range(200)]scatter3d = (    Scatter3D(init_opts=opts.InitOpts(theme=ThemeType.MACARONS, width="1000px", height="700px"))    .add("", data, grid3d_opts=opts.Grid3DOpts(width=100, height=100, depth=100))    .set_global_opts(title_opts=opts.TitleOpts(title="3D散点图-三维数据分布"),                     visualmap_opts=opts.VisualMapOpts(dimension=2, min_=0, max_=100, range_color=["#00FFFF", "#FF00FF"])))scatter3d.render("3D散点图.html")
7. 3D 柱状图(立体多维度数据对比)
from pyecharts import options as optsfrom pyecharts.charts import Bar3Dfrom pyecharts.globals import ThemeTypeimport random# 构造3D柱状数据:[x, y, 数值]x_data = list(range(10))y_data = list(range(10))data = [[i, j, random.randint(0, 50)] for i in x_data for j in y_data]bar3d = (    Bar3D(init_opts=opts.InitOpts(theme=ThemeType.ROMA, width="1000px", height="700px"))    .add("", data, xaxis3d_opts=opts.Axis3DOpts(x_data, type_="category"),         yaxis3d_opts=opts.Axis3DOpts(y_data, type_="category"),         zaxis3d_opts=opts.Axis3DOpts(type_="value"))    .set_global_opts(title_opts=opts.TitleOpts(title="3D柱状图-立体数据对比"),                     visualmap_opts=opts.VisualMapOpts(min_=0, max_=50, range_color=["#FFE4E1", "#FF6347"])))bar3d.render("3D柱状图.html")

8. 3D 曲面图(展示三维曲面数据趋势)

适合展示连续的空间曲面数据,比如地形、温度场分布,效果超惊艳:

from pyecharts import options as optsfrom pyecharts.charts import Surface3Dfrom pyecharts.globals import ThemeTypeimport math# 构造曲面数据:基于数学函数生成def get_surface_data():    data = []    for x in range(-30, 30):        for y in range(-30, 30):            z = math.sin(math.sqrt(x**2 + y**2)) / (math.sqrt(x**2 + y**2) + 1e-8)            data.append([x, y, z * 10])    return datasurface3d = (    Surface3D(init_opts=opts.InitOpts(theme=ThemeType.DARK, width="1000px", height="700px"))    .add("", get_surface_data(), grid3d_opts=opts.Grid3DOpts(width=100, height=100, depth=100))    .set_global_opts(title_opts=opts.TitleOpts(title="3D曲面图-数学函数曲面"),                     visualmap_opts=opts.VisualMapOpts(min_=-5, max_=5, range_color=["#0000FF", "#FFFFFF", "#FF0000"])))surface3d.render("3D曲面图.html")

使用技巧(新手必看)

  1. 样式自定义
通过init_opts设置主题(ThemeType 有 10 + 款)、图表宽高,通过color参数自定义配色,适配不同展示场景;
  1. 交互配置
tooltip_opts开启悬浮提示,legend_opts调整图例位置,markpoint/markline标注极值 / 平均值,提升图表实用性;
  1. 文件输出
render()生成 html 文件,支持浏览器直接打开,可嵌入网页、PPT,也可通过render_notebook()在 Jupyter 中直接展示;
  1. 数据适配
所有图表的核心是数据格式,只需将自己的业务数据按示例格式整理,替换源码中的测试数据即可。
把这篇收藏起来,下次做可视化再也不用到处找代码啦,直接抄作业,效率拉满~

最新文章

随机文章