matplotlib学习笔记1-图中显示中文

本文介绍了一种在使用matplotlib库绘制图表时,使图例能够正常显示中文的简便方法。通过设置字体和符号编码,使得中文标签可以正确显示。

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

相信很多初学者和我一样,在利用matplotlib库画图的时候遇到过图例不能显示中文的问题。经过仔细探索(百度+谷歌),现分享一种简单便捷一劳永逸的方法。

  • 一般画图是不能显示中文图例的:
import numpy as np
from scipy.optimize import leastsq
import pylab as pl
import matplotlib

def func(x,p):
    a,k,theta = p
    return a*np.sin(2*np.pi*k*x+theta)

def residuals(p,y,x):
    return y - func(x,p)

x = np.linspace(0,-2*np.pi,100)
a = 10
k = 0.34
theta = np.pi/6

y0 = func(x,[a,k,theta])
y1 = y0 + 2*np.random.randn(len(x))

p0 = [7,0.2,0]

plsq = leastsq(residuals,p0,args=(y1,x))
print('真实的参数',[a,k,theta])  
print('拟合参数',plsq[0]) 

pl.plot(x,y0,label = '真实数据')
pl.plot(x,y1,label = '带噪声的实验数据')
pl.plot(x,func(x,plsq[0]),label = '拟合数据')
pl.legend()
pl.show() 

运行之后,图例不能正常显示,只是几个框框。
这里写图片描述

  • 解决方法:
#在前面加上下面三行:
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

代码变成:

import numpy as np
from scipy.optimize import leastsq
import pylab as pl
import matplotlib

from pylab import * 
mpl.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False**

def func(x,p):
    a,k,theta = p
    return a*np.sin(2*np.pi*k*x+theta)

def residuals(p,y,x):
    return y - func(x,p)

x = np.linspace(0,-2*np.pi,100)
a = 10
k = 0.34
theta = np.pi/6

y0 = func(x,[a,k,theta])
y1 = y0 + 2*np.random.randn(len(x))

p0 = [7,0.2,0]

plsq = leastsq(residuals,p0,args=(y1,x))
print('真实的参数',[a,k,theta])  
print('拟合参数',plsq[0]) 

pl.plot(x,y0,label = '真实数据')
pl.plot(x,y1,label = '带噪声的实验数据')
pl.plot(x,func(x,plsq[0]),label = '拟合数据')
pl.legend()
pl.show()    

运行该代码:
这里写图片描述

这样就轻松的解决了matplotlib中图例不能是中文的问题!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值