大数据分析/机器学习基础之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)
相关推荐
bst@微胖子1 小时前
Python高级语法之selenium
开发语言·python·selenium
查理零世2 小时前
【蓝桥杯集训·每日一题2025】 AcWing 6118. 蛋糕游戏 python
python·算法·蓝桥杯
魔尔助理顾问3 小时前
一个简洁高效的Flask用户管理示例
后端·python·flask
java1234_小锋3 小时前
一周学会Flask3 Python Web开发-request请求对象与url传参
开发语言·python·flask·flask3
诚信爱国敬业友善6 小时前
常见排序方法的总结归类
开发语言·python·算法
架构默片7 小时前
【JAVA工程师从0开始学AI】,第五步:Python类的“七十二变“——当Java的铠甲遇见Python的液态金属
java·开发语言·python
小哥山水之间8 小时前
在 Python 中操作 Excel 文件
开发语言·python·excel
wang_yb10 小时前
『Python底层原理』--CPython的变量实现机制
python·databook
databook10 小时前
『Python底层原理』--CPython的变量实现机制
后端·python
ww1800010 小时前
多目标鲸鱼优化算法-NSWOA-可用于(机器人轨迹跟踪控制/柔性作业车间调度/无人机三维路径规划)
开发语言·python·算法