zoukankan      html  css  js  c++  java
  • Python3.5 在Ubuntu16.04上无法画图的解决方案

    1. 问题由来

    在使用下面的测试代码学习python时,用Pycharm画不出来图像,SPYDER3 可以画出来。
    下面的代码来自:http://old.sebug.net/

    # -*- coding: utf-8 -*-
    import numpy as np
    from scipy.optimize import leastsq
    import pylab as pl
    def func(x, p):
        """
        数据拟合所用的函数: A*sin(2*pi*k*x + theta)
        """
        A, k, theta = p
        return A*np.sin(2*np.pi*k*x+theta)
    
    def residuals(p, y, x):
        """
        实验数据x, y和拟合函数之间的差,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 (u"真实参数:", [A, k, theta])
    print (u"拟合参数", plsq[0]) # 实验数据拟合后的参数
    
    pl.plot(x, y0, label=u"真实数据")
    pl.plot(x, y1, label=u"带噪声的实验数据")
    pl.plot(x, func(x, plsq[0]), label=u"拟合数据")
    pl.legend()
    pl.show()

    发现问题

    在python控制台输入

    import matplotlib
    matplotlib.get_backend()
    u’agg’

    我们可以看到输出的时agg,AGG使不能画图的。

    so,解决方案如下

    sudo apt-get install tk-dev
    sudo pip uninstall -y matplotlib
    sudo pip –no-cache-dir install -U matplotlib #这是最关键的

    图一发

    这里写图片描述

    稍后要解决这个中文乱码的问题了。

  • 相关阅读:
    Linq to OBJECT延时标准查询操作符
    LINQ to XML
    动态Linq(结合反射)
    HDU 1242 dFS 找目标最短路
    HDu1241 DFS搜索
    hdu 1224 最长路
    BOJ 2773 第K个与m互质的数
    ZOJ 2562 反素数
    2016 ccpc 杭州赛区的总结
    bfs UESTC 381 Knight and Rook
  • 原文地址:https://www.cnblogs.com/shugen/p/6863006.html
Copyright © 2011-2022 走看看