正在学习《用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. css3内容持续更新ing

    要做在手机里面.4s和5都有差别更加何况还有其他安卓手机,所以做好之后要缩小一点 用的是background.用的了background-size,如果是50%就是等比缩放,50% 50%就会变形,现 ...

  2. Eclipse管理Java工程(j2se/j2ee/maven)

    Eclipse管理J2SE/J2EE(Maven)项目 eclipse是一个集成开发工具,有编译,运行,打包部署等功能.eclipse可以新建多种项目,不同的项目有不同的IDE层次结构,方便用户管理资 ...

  3. HDUOJ----1234 开门人和关门人(浙江大学考研题)

    开门人和关门人 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  4. python 将数据随机分为训练集和测试集

    # -*- coding: utf-8 -*- """ Created on Tue Jun 23 15:24:19 2015 @author: hd "&qu ...

  5. 各种浏览器hack

    Hack是针对不同的浏览器去写不同的CSS样式,从而让各浏览器能达到一致的渲染效果,那么针对不同的浏览器写不同的CSS CODE的过程,就叫CSS HACK,同时也叫写CSS Hack.然后将Hack ...

  6. 用Masonry实现键盘的收回和弹出

    首先说几点:我一般将数值类型的约束用mas_equalTo,而相对于某个控件,或者某个控件的某个约束,我会使用equalTo,如:make.size.mas_equalTo(CGSizeMake(10 ...

  7. bzoj 2132: 圈地计划

    #include<cstdio> #include<iostream> #include<cstring> #define M 100009 #define inf ...

  8. 基于Lumisoft.NET组件的POP3邮件接收和删除操作

    From: http://www.cnblogs.com/wuhuacong/archive/2013/05/06/3063093.html Lumisoft.NET组件是一个非常强大的邮件发送.邮件 ...

  9. ModuleWorks免费下载使用方法大全

    ModuleWorks为模拟机器的工具运转及(或)机床和车床材料的搬运提供了一整套解决方案. 模拟技术可以识别潜在的碰撞问题,允许在NC代码生成前进行除错检查,并且渐渐成为CAM处理方面必不可少的解决 ...

  10. [安卓]我的安卓开发FAQ

    1.什么是ADT: android官方解释是:ADT (Android Developer Tools) is a plugin for Eclipse that provides a suite o ...