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

相信很多初学者和我一样,在利用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中图例不能是中文的问题!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏difcareer的技术笔记

OpenGL API 简介

开发基于 OpenGL 的应用程序,必须先了解 OpenGL 的库函数。它采用 C 语言风格,提供大量的函数来进行图形的处理和显示。OpenGL 库函数的命名方...

744
来自专栏walterlv - 吕毅的博客

WPF 绘制对齐像素的清晰显示的线条

发布于 2017-12-12 13:49 更新于 2018-08...

461
来自专栏Linux驱动

30.QT-渐变之QLinearGradient、 QConicalGradient、QRadialGradient

775
来自专栏点滴积累

PhiloGL学习(1)——场景创建及方块欲露还羞出水面

前言 上一篇文章中介绍了我认识PhiloGL框架的机缘以及初步的探讨(见JS前端三维地球渲染——中国各城市航空路线展示),在此文中仅仅对此框架进行了简单介绍并初...

3406
来自专栏AI研习社

深度学习对话系统实战篇 -- 简单 chatbot 代码实现

本文的代码都可以到我的 github 中下载:https://github.com/lc222/seq2seq_chatbot 前面几篇文章我们已经介绍了 s...

6218
来自专栏前端儿

数数小木块

输入第一行是一个整数N(N<=10)表示测试数据的组数) 接下来的n行 每行只有一个整数 ,表示这堆小木块的层数,输出对应每个输入的层数有一个输出,表示这堆小木...

691
来自专栏PPV课数据科学社区

【学习】《R实战》读书笔记(第三章)

会是一种在于拓展视野、宏观思维、知识交流、提升生活的活动。PPV课R语言读书会以“学习、分享、进步”为宗旨,通过成员协作完成R语言专业书籍的精读和分享,达到学习...

3116
来自专栏Java帮帮-微信公众号-技术文章全总结

【Java案例】打印五环

案例描述 在屏幕上画出奥运五环旗,如图1.7所示。 ? 图1.7 奥运五环旗 案例分析 观察奥运五环旗的图案,直观的感觉,由五个圆组成,每个圆的颜色不一样...

2675
来自专栏数据派THU

独家 | 10分钟带你上手TensorFlow实践(附代码)

原文标题:TensorFlow Tutorial: 10 minutes Practical TensorFlow lesson for quick learn...

3227
来自专栏深度学习之tensorflow实战篇

R语言高级绘图命令(标题-颜色等)

plot(x)          以x的元素值为纵坐标、以序号为横坐标绘图 plot(x,y)        x(在x-轴上)与y(在y-轴上)的二元作图 ...

2786

扫码关注云+社区