正在学习《用python做科学计算》,在练习最小二乘法时遇到matplotlib无法显示中文的问题。查资料,感觉动态的加上几条语句是最好,这里贴上全部的代码。

# -*- coding: utf-8 -*-
"""
Created on Wed Aug 10 23:20:26 2016 @author: Administrator
""" import numpy as np
from scipy.optimize import leastsq
import pylab as pl '''
针对matplotlib显示中文的办法
只需添加下面三行代码
'''
import matplotlib as mpl
mpl.rcParams["font.sans-serif"] = ["Microsoft YaHei"]
mpl.rcParams['axes.unicode_minus'] = False def func(x, p):
'''
数据拟合所需要的函数
A*sin(2*K*np.pi*x + theta)
'''
A, k, theta = p
return A*np.sin(2*k*np.pi*x + theta) def residuals(p , y, x):
'''
实验数据和拟合函数之差,p为拟合需要的参数
'''
return (y-func(x, p)) x = np.linspace(0, -2*np.pi, 100)
A, k, theta = 10, 0.34, np.pi/6 # 真实数据的函数参数
y0 = func(x, [A, k, theta]) # 真实数据
y1 = y0 + 2 * np.random.randn(len(x)) # 加入噪声之后的数据 p0 = [7, 0.2, 0] # 第一次猜测的函数拟合函数
# 调用leastsq进行数据拟合
# residuals为计算误差的函数
# p0为拟合参数的初始值
# args为需要拟合的实验数据
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()

  输出结果:

  #########2016/10/11补更#############

  是这样的,我在spyder环境下,用matplotlib作图,尝试上面的办法,竟然不可以。。。额。那个。其实上面的方法换其他的编辑器都是可以的,pycharm和sublime亲测可行。这里只是探索一下。

  在spyder下显示是这样的,标题和图例都无法显示中文。懵逼。。。当时查了好久资料也一直没有解决,问题已经提问到stack overflow.

  不过呢,今天在这里又看到另一种方式,虽说图例依然没办法显示中文,但是把标题的中文问题解决了。通过matplotlib中指定字体方法。

  代码如下:

import matplotlib.pyplot as plt
import scipy
import numpy as np
from pylab import *
myfont = matplotlib.font_manager.FontProperties(fname='C:/Windows/Fonts/msyh.ttf')
mpl.rcParams['axes.unicode_minus'] = False
x=np.linspace(0,2*np.pi,10)
y=np.sin(x)
xvals=np.linspace(0,2*np.pi,20)
yinterp = np.interp(xvals, x, y)
plot1=plt.plot(x, y, 'o')#采用unicode编码
plot2=plt.plot(xvals, yinterp, '-x')
plt.xlabel(u'x轴',fontproperties=myfont)
plt.ylabel(u'y轴',fontproperties=myfont)
plt.title(u'插值',fontproperties=myfont)
plt.legend([u'真实值',u'插值'])
plt.show()

  结果如下:

  等我什么时候找到在spyder下面的完美解决方案再补充咯。

python数据分析入门——matplotlib的中文显示问题&最小二乘法的更多相关文章

  1. Python 3下Matplotlib画图中文显示乱码的解决方法

    解决办法: 因为乱码是Matplotlib缺少中文配置所导致的,所以我们只需要在程序中说明使用中文字体即可. 先选一个字体.在计算机中找到字体,选择一种中文字体,比如我这里用的是楷体 右键可以查看其属 ...

  2. Ubuntu下matplotlib的中文显示

    真真地被matplotlib的中文显示折磨的不行了.简要记下解决方案,防止以后重新配又是蛋疼菊紧. 我的环境:系统是Ubuntu 13.04,Python是系统自带的,matplotlib是apt安装 ...

  3. Python数据分析入门

    Python数据分析入门 最近,Analysis with Programming加入了Planet Python.作为该网站的首批特约博客,我这里来分享一下如何通过Python来开始数据分析.具体内 ...

  4. Python数据分析入门与实践 ✌✌

    Python数据分析入门与实践 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 这是一个数据驱动的时代,想要从事机器学习.人工智能.数据挖掘等前沿技术,都离不开 ...

  5. Python数据分析入门之pandas基础总结

    Pandas--"大熊猫"基础 Series Series: pandas的长枪(数据表中的一列或一行,观测向量,一维数组...) Series1 = pd.Series(np.r ...

  6. Python数据分析入门与实践

    Python数据分析入门与实践 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以关 ...

  7. python数据分析工具 | matplotlib

    不论是数据挖掘还是数学建模,都免不了数据可视化的问题.对于 Python 来说,matplotlib 是最著名的绘图库,它主要用于二维绘图,当然也可以进行简单的三维绘图.它不但提供了一整套和 Matl ...

  8. Python 中使用 matplotlib 绘图中文字符显示异常的问题

    最近在使用 Python matplotlib 绘制图表时发现中文字符不能正确显示:比如在绘制折线图时,中文全部显示成▢▢▢的格式,虽然将数据改成英文就没什么问题,但是所有数据都这么做时不可行的,于是 ...

  9. 10个步骤教你如何安装Anaconda安装,Python数据分析入门必看

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:小白 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行 ...

随机推荐

  1. 面试时,问哪些问题能试出一个 Android 应用开发者真正的水平?【转自知乎】

    这几年面过的各种Android开发也有三位数了,failed的不敢说,pass的基本都没有看走眼,来得晚了也想说说我的体会. 一般面试时间短则30分钟,多则1个小时,这么点时间要全面考察一个人难度很大 ...

  2. 数据库中User和Schema的关系

    如果我们想了解数据库中的User和Schema到底什么关系,那么让我们首先来了解一下数据库中User和Schema到底是什么概念.        在SQL Server2000中,由于架构的原因,Us ...

  3. 补交git、ssh

    本来应该早就应该交的,自己给忘记了,非常抱歉,现在补交上来 词频统计: 代码地址:https://coding.net/u/liuff/p/cipin/git ssh:git@git.coding.n ...

  4. 父类中“this” 指向问题

    “this.字段”如果出现在父类代码中,指的就是父类属性. “this.方法”不管出现在父类还是子类代码中,指的都是子类方法. “this.字段”如果出现在子类代码中,指的就是子类属性. 在程序的时候 ...

  5. 理解Servlet过滤器 (javax.servlet.Filter)

    过滤器(Filter)的概念 过滤器位于客户端和web应用程序之间,用于检查和修改两者之间流过的请求和响应. 在请求到达Servlet/JSP之前,过滤器截获请求. 在响应送给客户端之前,过滤器截获响 ...

  6. MySql与SqlServer的一些常用用法的差别

    MySql与SqlServer的一些常用用法的差别 本文为转载 本文将主要列出MySql与SqlServer不同的地方,且以常用的存储过程的相关内容为主. 1. 标识符限定符 SqlServer [] ...

  7. Windows Store App 用户库文件操作

    (1)获取用户库位置 如果想要通过应用程序在用户库中创建文件,首先需要获得用户库中指定的位置,例如图片库.文档库等.这里值得注意的是,在获取用户库的位置之前,必须在Windows应用商店项目的清单文件 ...

  8. jQuery给同一个元素两个点击事件

    $(".course-form .course-start img").each(function(i) { $(this).toggle(function(){ $(this). ...

  9. ORACLE数据泵还原(IMPDP命令)【转】

      Oracle数据库还原IMPDP命令是相对于EXPDP命令的,方向是反向的.即对于数据库备份进行还原操作.一.知晓IMPDP命令 ? C:\>impdp -help Import: Rele ...

  10. Android利用ContentProviderOperation添加联系人

    Android添加联系人有两种方式: 1. 直接调用插入语句,先插入一个空Item,得到一个id,然后给这个id对应的插入其他信息,如姓名,号码,邮件等: 2. 利用ContentProviderOp ...