大数据分析/机器学习基础之matplotlib绘图篇

目录

一、前言

本人因在学习基于python的机器学习相关教程时第一次接触到matplotlib相关方面的绘图知识,故写此笔记进行记录,如果能帮助到其他人欢迎点个赞👍表示支持

我的运行环境

  1. 学习工具:jupyter-notebook
  2. python版本:311
  3. 系统:Win11

二、什么是matplotlib?

matplotlib是基于python生态开发的一个可视化绘图库,它的出现让python在数据分析及机器学习方面占了重要的一部分,目前很多数据分析及机器学习相关方面的工程都有使用到这个库,并且由于其简单易用,安装简单等方面的优势深得广大开发者的喜爱。

三、安装及导入

1.安装
pip install matplotlib

  1. 导入项目

新建项目并直接import即可import matplotlib.pyplot as plt,简单易用

四、matplotlib的使用

  1. 基础使用:生成一个画布

    #定义一个画布
    #subplots(X,Y,figsize=(X,Y))
    #其中figsize(X,Y) 用于定义画布的大小
    fig,ax = plt.subplots(figsize = (10, 5))
    plt.show()

  1. 生成多个子图(ax)

    #subplots(X,Y)用于定义该画布有几行几列,即一个大画布fig上有多个小画布ax组成axes
    fig,axes = plt.subplots(2,3,figsize = (10, 4))
    plt.show()

  1. 绘制多个子图

    #绘制多个子图
    fig,axes = plt.subplots(1,2,figsize=(10,4)) #绘制一个一行两列的图

    x=[1,20,40,15,2]
    y=[4,6,15,7,6]

    #对第一个子图进行绘制
    bplot1 = axes[0].plot(x,y)

    #绘制第二个子图
    bplot2 = axes[1].plot(y,x)

  1. 同一块画布上绘制多条函数

    #简单的线性图

    x = list(range(0,10))

    y =list(range(0,10))

    plt.plot(x,y)

    plt.plot(range(12),color="red") #等价于上面的操作
    plt.plot([1,2,3]) #在现有的画布上继续绘画一条直线

  1. 放大图像(只显示函数图像的一部分)

    #原函数图像
    x=[1,20,40,15,2]
    y=[4,6,15,7,6]
    plt.plot(x,y)

复制代码
#直接对x,y赋值
x=[1,20,40,15,2]
y=[4,6,15,7,6]
plt.plot(x,y)
#通过设定坐标轴刻度,只显示部分图形
plt.axis([0,10,0,10])   #x:[0,10],y:[0,10]
  1. 为图像添加标题横纵坐标信息
  • 添加标题和x、y名称

    x=[1,20,40,15,2]
    y=[4,6,15,7,6]
    #添加标题
    plt.title("matplotlibTest")
    #添加x,y轴名称
    plt.xlabel("Feature")
    plt.ylabel("shape")
    plt.plot(x,y)

  • 更改x、y轴刻度(纯数字形式)

    x=[1,20,40,15,2]
    y=[4,6,15,7,6]
    #添加标题
    plt.title("matplotlibTest")
    #添加x,y轴名称
    plt.xlabel("Feature")
    plt.ylabel("shape")
    #修改x轴刻度,纯数字形式
    plt.xticks((0,10,20,30,40))
    #修改y轴刻度,纯数字形式
    plt.yticks((0,5,10,15,20))
    plt.plot(x,y)

  • 更改x、y轴刻度(自定义坐标信息)

    x=[1,20,40,15,2]
    y=[4,6,15,7,6]
    #添加标题
    plt.title("matplotlibTest")
    #添加x,y轴名称
    plt.xlabel("Feature")
    plt.ylabel("shape")
    #自定义x轴坐标信息
    plt.xticks((0,10,20,30,40),('text1','text2','text3','text4','text5'))
    #自定义y轴坐标信息
    plt.yticks((0,5,10,15,20),('align1','align2','align3','align4','align5'))
    plt.plot(x,y)

  1. 基于axes的显示画图

    #基于 axes 的显式画图:用 Axes 画图更加直观,所以被称为"显式画图",直接用 Figure画图,被称为 "隐式画图"
    import numpy as np
    x = np.linspace(-1,1,50) #生成50个-1到1之间的数
    y = x**2

    fig = plt.figure() #生成空白画布
    ax = fig.add_subplot() #空白的子图

    ax.plot(x,y,color="red",linewidth=4,linestyle='-.',marker='o') #绘画一条函数图

    ax.plot(y,x) #绘画另一条函数图

    ax.legend(["y=x2","y2=x"]) #添加图例

    ax.set_title('x and y',fontsize=20) #设置标题
    ax.set_xlabel("x label") #设置x轴名称
    ax.set_ylabel("y label") #设置y轴名称
    ax.set_xlim(-1,1) #设置x轴范围
    ax.set_ylim(-1,1) #设置y轴范围

    ax.grid(linewidth=3,linestyle=':',color='purple',alpha=0.5)

    plt.show()

8.其他

matplotlib除了生成上述的线性图以外还可以生成其他箱图等特殊的图像形式,具体可以参考matplotlib的官方文档

五、matplotlib中文乱码问题

本人使用的是全局字体的解决方案

1.从matplotlib导入font_manager,然后查看打印电脑已有的字体,具体代码如下:

复制代码
from matplotlib import font_manager
import matplotlib.pyplot as plt

#打印电脑上所有已安装的字体
fontnamelist = font_manager.get_font_names() 

print(fontnamelist)

2.设置全局字体

根据第一步你电脑里所拥有的字体来设置全局字体,设置的字体名称与上面打印的名称一致就行

这里本人采用的是鸿蒙os简体字体

复制代码
#设置全局字体为鸿蒙os简体
plt.rcParams['font.sans-serif']=['HarmonyOS Sans SC']  #用啥字体这里改,最重要的是你电脑里得事先安装有这个字体
#解决图像中的"-"负号的乱码问题
plt.rcParams["axes.unicode_minus"]=False 

x=[1,20,40,15,2]
y=[4,6,15,7,6]
#添加标题
plt.title("matplotlibTest测试")
#添加x,y轴名称
plt.xlabel("特征")
plt.ylabel("属性")
#自定义x轴坐标信息
plt.xticks((0,10,20,30,40),('文本1','文本2','文本3','文本4','文本5'))
#自定义y轴坐标信息
plt.yticks((0,5,10,15,20),('属性1','属性2','属性3','属性4','属性5'))
plt.plot(x,y)
相关推荐
青 春 记 忆2 小时前
Dify Docker Compose 通用无损升级指南:从备份、双版本预演到切换与回滚
运维·人工智能·python·docker·容器
GlueNa2SiO32 小时前
03-Flask模板引擎Jinja2详解
笔记·python·flask
临沂GEO4 小时前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白4 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
荷蒲6 小时前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习
数据狐(Datafox)7 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
量化吞吐机7 小时前
2026年下半年手工交易规则走向量化表达,产品该先接住哪一步
人工智能·python
Metaphor6928 小时前
使用 Python 读取和删除 Excel 文件属性
python·excel
迷迭香yy9 小时前
Python构建转融券多空识别系统从接口到因子的全流程 IG50免费开源股票数据API接口
开发语言·python·开源
月光船幽幽9 小时前
真实即粗糙,光滑是伪造
人工智能·python