图解入门Matplotlib

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。

 Matplotlib简单介绍

    可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。

image.gif


    简单的Matplotlib画图

    matplotlib.pyplot模块

    import matplotlib.pyplot as plt

    image.gif

    import matplotlib.pyplot as plt
    x = [1, 2, 3, 4]             # Step 1准备数据
    y = [10, 20, 25, 30]
    fig = plt.figure()             # Step 2创建图形 
    ax = fig.add_subplot(111)     # Step 3绘图
    ax.plot(x, y, color='lightblue', \
      linewidth=3)  # Step 4自定义设置
    ax.scatter([2, 4, 6], [5, 15, 25], \
      color='darkgreen', marker='^')
     ax.set_xlim(1, 6.5)
     plt.savefig('foo.png')       # Step 5保存图形 
    plt.show()                  # Step 6显示图形

    image.gif

    image.gif


    图形绘制流程

    image.gif

    创建画布

    plt.figure(figsize=(), dpi=)
        #figsize:指定图的长宽
        #dpi:图像的清晰度
        #返回fig对象

    image.gif

    import matplotlib.pyplot as plt
    # 创建一个4英寸宽,2英寸高,分辨率为300 dpi的图
    fig = plt.figure(figsize=(4, 2), dpi=300)
    plt.plot()
    plt.show()

    image.gif

    image.gif

    绘制图像

    plt.plot(x, y, 'g--o', markersize=8, markerfacecolor='yellow', linewidth=2)

    image.gif

    线型和标记

    plt.plot(x, y, 'r--o')  # 红色虚线,点标记为圆圈

    image.gif

    线条颜色

    plt.plot(x, y, color='blue')  # 线条颜色为蓝色

    image.gif

    线条宽度

    plt.plot(x, y, linewidth=2)  # 线宽为2

    image.gif

    标记大小和颜色

    plt.plot(x, y, marker='o', markersize=10, markerfacecolor='red', markeredgecolor='black')

    image.gif

    • marker='o' 设置数据点的标记为圆形。
    • markersize=10 设置标记的大小。
    • markerfacecolor='red' 设置标记的填充颜色为红色。
    • markeredgecolor='black' 设置标记的边框颜色为黑色

    标签

    plt.plot(x, y, label='y = x^2')

    image.gif

    显示图像

    # 显示图例
    plt.legend(loc='best')
    # 显示图像
    plt.show()

    image.gif

    综合举例

    import matplotlib.pyplot as plt
    # 创建一个4英寸宽,2英寸高,分辨率为300 dpi的图
    fig = plt.figure(figsize=(4, 2), dpi=300)
    # 数据
    x = [0, 1, 2, 3, 4]
    y = [0, 1, 4, 9, 16]
    # 绘制图像,设置线条样式、颜色和标记,并设置标签
    plt.plot(x, y, 'g--o', markersize=8, markerfacecolor='yellow', linewidth=2, label='y = x^2')
    # 添加标题和标签
    plt.title("Quadratic Plot")
    plt.xlabel("X values")
    plt.ylabel("Y values")
    # 显示图例
    plt.legend(loc='best')
    # 显示图像
    plt.show()

    image.gif

    image.gif


    图形添加辅助功能

       为了更好地理解所有基础绘图功能,我们通过天气温度变化的绘图来融合所有的基础API使用

    需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度

    准备数据并画出初始折线图

    import matplotlib.pyplot as plt
    import random
    # 画出温度变化图
    # 0.准备x, y坐标的数据
    x = range(60)
    y_shanghai = [random.uniform(15, 18) for i in x]  #random.uniform(x, y) 方法将随机生成一个实数,它在 [x,y] 范围内。
    # 1.创建画布
    plt.figure(figsize=(20, 8), dpi=80)
    # 2.绘制折线图
    plt.plot(x, y_shanghai)
    # 3.显示图像
    plt.show()

    image.gif

    添加自定义x,y刻度

    • plt.xticks(x, **kwargs)
      x:要显示的刻度值
    • plt.yticks(y, **kwargs)
      y:要显示的刻度值
    # 增加以下两行代码
    # 构造x轴刻度标签
    x_ticks_label = ["11点{}分".format(i) for i in x]
    # 构造y轴刻度
    y_ticks = range(40)
    # 修改x,y轴坐标的刻度显示
    plt.xticks(x[::5], x_ticks_label[::5])
    plt.yticks(y_ticks[::5])

    image.gif

    中文显示问题解决

    ## 解决中文字符显示不全
    # 设置中文编码和负号的正常显示
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False

    image.gif

    添加网格显示

    为了更加清楚地观察图形对应的值

    plt.grid(True, linestyle='--', alpha=0.5)

    image.gif

    添加描述信息

    添加x轴、y轴描述信息及标题

    通过fontsize参数可以修改图像中字体的大小

    plt.xlabel("时间")
    plt.ylabel("温度")
    plt.title("中午11点0分到12点之间的温度变化图示", fontsize=20)

    image.gif

    图像保存

    # 保存图片到指定路径
    plt.savefig("d:\\test.png")

    image.gif

    • 注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。
    import matplotlib.pyplot as plt
    import random
    from pylab import mpl
    # 设置显示中文字体
    mpl.rcParams["font.sans-serif"] = ["SimHei"]
    # 设置正常显示符号
    mpl.rcParams["axes.unicode_minus"] = False
    # 0.准备数据
    x = range(60)
    y_shanghai = [random.uniform(15, 18) for i in x]
    # 1.创建画布
    plt.figure(figsize=(20, 8), dpi=100)
    # 2.绘制图像
    plt.plot(x, y_shanghai)
    # 2.1 添加x,y轴刻度
    # 构造x,y轴刻度标签
    x_ticks_label = ["11点{}分".format(i) for i in x]
    y_ticks = range(40)
    # 刻度显示
    plt.xticks(x[::5], x_ticks_label[::5])
    plt.yticks(y_ticks[::5])
    # 2.2 添加网格显示
    plt.grid(True, linestyle="--", alpha=0.5)
    # 2.3 添加描述信息
    plt.xlabel("时间")
    plt.ylabel("温度")
    plt.title("中午11点--12点某城市温度变化图", fontsize=20)
    # 2.4 图像保存
    plt.savefig("d:\\test.png")
    # 3.图像显示
    plt.show()

    image.gif

    image.gif


    绘制其它类型的图像

    绘制折线图

    import matplotlib.pyplot as plt
    plt.plot([1,2,5,6,8])
    plt.ylabel('some number')
    plt.show()

    image.gif

    image.gif

    绘制函数曲线

    import numpy as np
    import matplotlib.pyplot as plt
    x1 = np.linspace(-5, 5, 101)
    y1 = np.sin(x1)
    plt.plot(x1, y1)
    plt.show()

    image.gif

    image.gif

    x1 中保存的是为显示 sin 曲线而生成的从 -5 到 5 的 101 个数据。

    y1 中保存的是使用 NumPy 的 sin 函数生成的数据。

    绘制散点图

    x2 = np.arange(100)
    y2 = x2 * np.random.rand(100)
    plt.scatter(x2, y2)

    image.gif

    image.gif

    x2 中保存的是元素为“从 0 到 99 的整数”的数组。

    y2 中保存的是元素为“在从 0 到 1 的范围内随机选出的 100 个数据”的数组与刚才的变量 x2

    相乘的结果。

    绘制直方图

    x2 = np.arange(100)
    y2 = x2 * np.random.rand(100)
    plt.hist(y2, bins=5)

    image.gif

    image.gif

    绘制柱状图

    x2 = np.arange(100)
    y2 = x2 * np.random.rand(100)
    plt.bar(x2, y2)

    image.gif

    image.gif

    绘制箱形图

    image.gif


    Matplotlib的使用

    image.gif

    下面对红酒数据集进行可视化

    加载数据保存在data中

    将要显示的索引为 0 的 alcohol(酒精度)和索引为 9 的 color_intensity(色泽)数据分别赋值 给 x3 和 y3。

    画出散点图

    import matplotlib.pyplot as plt
    from sklearn.datasets import load_wine
    data = load_wine()
    x3 = data.data[:, [0]]
    y3 = data.data[:, [9]]
    plt.scatter(x3, y3)

    image.gif

    image.gif

    下面输出y3的直方图

    plt.hist(y3,bins=5)

    image.gif

    image.gif


    目录
    相关文章
    |
    15天前
    |
    人工智能 自然语言处理 文字识别
    阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
    Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
    5812 29
    阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
    |
    10天前
    |
    存储 定位技术 数据库
    CodeGraph 如何让 Claude Code减少 7 成工具调用?
    CodeGraph 为 Coding Agent 提供本地代码知识图谱,把函数、类、调用链和框架路由提前整理成“项目地图”,减少盲目搜索和文件读取。它不是新 Agent,而是上下文基础设施,让 Agent 更快找到正确代码路径,平均减少 7 成工具调用。
    1169 2
    |
    7天前
    |
    人工智能 安全 定位技术
    CodeGraph深度解析 让Claude Code工具调用直降七成的核心原理与实操教程
    如今以Claude Code为代表的AI编程智能体已经成为开发者日常编码、项目重构、漏洞修复的必备工具。但在长期使用过程中,几乎所有开发者都会遇到同一个明显痛点:AI虽然具备强大的代码生成与分析能力,却常常陷入盲目探索的循环中。
    946 1
    |
    17天前
    |
    人工智能 自然语言处理 供应链
    |
    8天前
    |
    人工智能 弹性计算 安全
    阿里云618活动时间、活动入口、优惠活动详细解读
    2026年阿里云618创新加速季已全面开启,作为年度力度最大的云产品促销活动,本次大促覆盖轻量应用服务器、ECS云服务器、GPU云服务器、数据库、AI算力、安全服务、CDN等全品类产品,推出5亿元算力补贴、新用户限时秒杀、普惠满减、企业专享、免费试用、云大使返佣等多重福利,个人开发者、中小企业、AI团队均可享受专属低价。本文将系统梳理2026年阿里云618活动的完整时间节点、官方参与入口、各类优惠细则、使用规则、热门产品推荐及实操代码,帮助用户精准参与、高效省钱,以最低成本完成上云部署。
    741 4
    |
    23天前
    |
    人工智能 开发工具 iOS开发
    Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
    Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
    3833 15
    |
    8天前
    |
    运维
    欢迎报名|2026 Agentic AICon—智能体基础设施与AgentOps专场,邀您参会
    欢迎报名|2026 Agentic AICon—智能体基础设施与AgentOps专场,邀您参会
    1427 0