Python-matplotlib绘图及中文乱码问题

本文介绍了Python的matplotlib库在数据分析和机器学习中的应用,详细讲解了matplotlib的安装、导入和基本使用,包括生成画布、绘制多条函数、添加标题和坐标信息等。此外,还重点探讨了matplotlib中文乱码的解决方案,通过设置全局字体来避免乱码问题。同时,文章提供了Python技术储备的相关学习资源,包括学习路线、视频教程、书籍和实战案例,适合Python初学者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

  • 一、前言
    • 我的运行环境
  • 二、什么是matplotlib?
  • 三、安装及导入
  • 四、matplotlib的使用
  • 五、matplotlib中文乱码问题

一、前言

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

我的运行环境

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

二、什么是matplotlib?

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

三、安装及导入

1.安装
pip install matplotlib
2. 导入项目
新建项目并直接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=x**2","y**2=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)


关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,希望提供给想学习 Python 的小伙伴们一点帮助!

保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python基础学习视频

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、Python工具包+项目源码合集
①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

六、Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

<think>好的,我现在需要解决PythonMatplotlib中文乱码问题。用户已经提供了几个引用,我需要仔细看看这些信息,整理出一个清晰的解决方案。 首先,用户提到Matplotlib默认不支持中文字体,导致乱码。根据引用[1],在Windows下需要设置字体。引用[2]到[5]主要是关于Mac系统的解决方案,尤其是使用'Arial Unicode MS'字体。这说明不同操作系统可能有不同的处理方法。 我应该分步骤来,先确定用户的操作系统,然后分别给出对应的解决方法。比如,Windows可能需要修改配置文件或者动态设置字体,而Mac则通过指定特定字体来解决。同时,可能需要安装中文字体,比如SimHei,或者在代码中设置参数。 另外,用户提供的引用中有提到修改matplotlibrc文件,这可能需要用户找到该文件的路径,然后进行配置。动态设置的话,使用plt.rcParams来指定字体,这样可以不修改配置文件,比较灵活。 还要注意,设置字体后可能需要同时设置axes.unicode_minus来解决负号显示问题。这些细节需要包括在回答中,确保用户完全解决问题。 最后,生成相关问题,可能涉及其他操作系统、更详细的配置步骤或者常见错误处理。需要确保问题相关且有帮助。</think>### Python Matplotlib 中文乱码解决方案 Matplotlib 默认不支持中文字体,导致图表中的中文显示为乱码或方块。以下是针对不同操作系统的解决方案: --- #### **Windows 系统** 1. **动态设置字体(推荐)** 在代码中直接指定支持中文的字体(如 `SimHei`): ```python import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体 plt.rcParams['axes.unicode_minus'] = False # 解决负号显示异常 ``` **注意**:需确保系统已安装 `SimHei` 字体,可通过控制面板 > 字体管理查看。 2. **修改配置文件** - 找到 Matplotlib 的配置文件 `matplotlibrc`,路径可通过以下代码获取: ```python import matplotlib print(matplotlib.matplotlib_fname()) # 输出配置文件路径[^1][^3] ``` - 在文件中修改以下两行: ``` font.sans-serif : SimHei, DejaVu Sans, ... # 添加SimHei到首位 axes.unicode_minus : False # 取消注释并修改 ``` --- #### **Mac 系统** 1. **动态设置字体** 使用系统自带的中文字体(如 `Arial Unicode MS`): ```python import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # 指定字体[^4][^5] plt.rcParams['axes.unicode_minus'] = False # 解决负号问题 ``` **注意**:若未安装该字体,可通过 `字体册` 应用下载或使用其他支持中文的字体(如 `PingFang SC`)。 2. **修改配置文件** 方法同 Windows,但配置文件路径通常为 `/Users/[用户名]/.matplotlib/matplotlibrc`[^2]。 --- #### **通用验证方法** 运行以下代码测试是否生效: ```python import matplotlib.pyplot as plt plt.plot([1, 2, 3], label='测试中文') plt.xlabel('横轴') plt.legend() plt.show() ``` 若中文正常显示,则配置成功。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值