plot无法画图---已解决

2023-05-16

项目场景:plot画图—BUG两则

记录小bug:

问题描述

用vscode开发中,需要进行plot输出,之前一直没问题,近日plot无输出,程序直接结束,不报错。
百度方案种种,无果。
测试样例:

import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0, 69, 1)
plt.plot(t, t, 'r', t, t**2, 'b')
label = ['t', 't**2']
plt.legend(label, loc='upper left')
plt.savefig('./test2.jpg')
plt.show()

原因分析:

提示:matplotlib包问题,重装,问题依旧


解决方案:

无奈放到pycharm下测试,发现程序

进程已结束,退出代码-1066598274 (0xC06D007E)

百度该退出代码,发现问题:
【-1066598274 (0xC06D007E)】解决matplotlib版本冲突问题
https://blog.csdn.net/weixin_40908748/article/details/127015859

  1. 卸载matplotlib和numpy库
pip uninstall matplotlib
pip uninstall numpy
  1. 查看anaconda环境中这两个库是否删干净了
pip list
  1. 重新安装matplotlib
pip install matplotlib

注意,只安装matplotlib即可,numpy作为依赖包会自动进行安装,plot显示正常,bug1解决。

问题描述:

运行另一个程序,依旧显示:

退出代码-1066598274 (0xC06D007E)

程序示例

import time
import matplotlib.pyplot as plt
import numpy as np
from math import e
from scipy.interpolate import make_interp_spline as spline

class PID:
    def __init__(self, P=0.2, I=0.0, D=0.0):
        self.kp = P
        self.ki = I
        self.kd = D
        self.uPrevious = 0
        self.uCurent = 0
        self.setValue = 0
        self.lastErr = 0
        self.preLastErr = 0
        self.errSum = 0
        self.errSumLimit = 10
# 位置式PID
    def pidPosition(self, curValue):
        err = self.setValue - curValue
        dErr = err - self.lastErr
        self.preLastErr = self.lastErr
        self.lastErr = err
        self.errSum += err
        outPID = self.kp * err + (self.ki * self.errSum) + (self.kd * dErr)
        return outPID

# 增量式PID
    def pidIncrease(self, curValue):
        self.uCurent = self.pidPosition(curValue)
        outPID = self.uCurent - self.uPrevious
        self.uPrevious = self.uCurent
        return outPID


class BeControlled:
    def __init__(self):
        self.lastControlIn = 0
        self.preLastControlIn = 0
        self.lastControlOut = 0
        self.preLastControlOut = 0
# 被控对象的相关计算
    def beControlledDeal(self, outPID):
        # output = 2*self.lastControlOut - 1*self.preLastControlOut + \
        #     0.00005*self.lastControlIn + 0.00005*self.preLastControlIn

        # output为被控对象的输出,此处是被控对象的传递函数离散化后,写成差分方程后的形式,被控对象的方程此处直接采用了设计好的参数,并与PID控制器的输出进行计算。
        # 如果需要设计自己的被控对象,将传递函数进行z变换后,交叉相乘,再进行z反变换即可,可参考《计算机控制系统》等书籍。
        # 因为是单位反馈,所以被控对象的输出等于传递函数的输入。
        output = 0.00019346*self.preLastControlIn + 0.00019671e-04*self.lastControlIn + \
            1.9512*self.lastControlOut - 0.9512*self.preLastControlOut
        self.preLastControlIn = self.lastControlIn
        self.lastControlIn = outPID
        self.preLastControlOut = self.lastControlOut
        self.lastControlOut = output
        return output


def testPid(P=0.2, I=0.0, D=0.0, Len=1000):
    pid = PID(P, I, D)
    beControlled = BeControlled()
    pid.setValue = 1  # set end
    curValue = 0
    curValueList = []
    timeList = []
    setValueList = []
    PIDoutList = []
    curValueList.append(0)
    timeList.append(0)
    setValueList.append(pid.setValue)
    PIDoutList.append(0)
    for i in range(1, Len):
        #采用位置式PID去掉注释即可
        # outPID = pid.pidPosition(curValue)
        outPID = pid.pidIncrease(curValue)
        PIDoutList.append(outPID)
        curValue = beControlled.beControlledDeal(outPID)
        curValueList.append(curValue)
        setValueList.append(pid.setValue)
        timeList.append(i)
    # 绘图
    timeSm = np.array(timeList)
    timeSmooth = np.linspace(timeSm.min(), timeSm.max(), 300)  # 将x轴300等分
    curValueSmooth = spline(timeList, curValueList)(timeSmooth)  # 插值.使原y轴数据平滑 
    pidoutSmooth = spline(timeList, PIDoutList)(timeSmooth)  # 使PID控制器输出平滑
    plt.figure(figsize=(4,3),facecolor='blue')
    #plt.xticks([-1, 3, 5])
    #plt.yticks([-1, 100, 10])
    plt.plot(timeSmooth, curValueSmooth)  # 画被控对象输出
    print(11)
    plt.plot(timeSmooth, pidoutSmooth)  # 画PID控制器输出
    plt.plot(timeList, setValueList)  # 画直线
    plt.xlim((0, Len))
    plt.ylim((min(curValueList)-0.5, max(curValueList)+0.5))
    plt.xlabel('time (s)')
    plt.ylabel('set value')
    plt.title('PID')
    plt.ylim((1-0.5, 1+0.5))
    plt.grid(True)
    plt.show()


if __name__ == "__main__":
    testPid(P=0, I=0.5, D=0, Len=5000)

原因分析

在bug1解决的时候安装matplotlib提示:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
scipy 1.7.1 requires numpy<1.23.0,>=1.16.5, but you have numpy 1.23.3 which is incompatible.

解决方案:

卸载 重装scipy库,会自动根据已安装的numpy版本来安装合适版本,GOOD!bug2解决!

pip uninstall Scipy
pip install  scipy
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

plot无法画图---已解决 的相关文章

  • 一文吃透VSCode中git的相关配置与使用

    本篇文章带大家聊聊VSCode 43 Git操作 xff0c 介绍一下VSCode中git的相关配置与使用 xff0c 希望对大家有所帮助 xff01 xff08 本文操作均在 Gitee 上进行 xff0c Gitee 与 Github
  • 如何安装并管理多版本node?方法介绍

    如何安装并管理多版本node xff1f 下面本篇文章给大家介绍一下多版本node的安装与切换详细操作 xff0c 希望对大家有所帮助 xff01 安装多版本node的原因 xff1a 在项目开发过程中 xff0c 不同项目使用的nodej
  • 软件工程复习(九):面向对象方法学引论

    面向对象方法学引论 面向对象方法学 主要观点 1 客观世界是由各种对象组成的 2 所有对象划分成了各种对象类 xff0c 每个对象类定义了一组数据和一组方法 这也是与面向过程设计的最大不同 xff0c 面向对象将二者分开 3 按照父类和子类
  • 记录一下关于国民技术单片机(N32G457)无法用MDK(Keil5)进行下载程序以及在线仿真的原因

    最近在学习使用国民技术的单片机来驱动无刷直流电机 xff0c 但是因为MDK对这个单片机支持没那么好 xff0c 所以没办法下载程序以及在线仿真调试 只能是添加了国民技术单片机的固件库之后 xff0c 编译程序没啥问题了 因为平常下载程序都
  • MacOS 安装brew失败解决方法

    MacOS 安装brew失败解决方法 报错信息解决方法 报错信息 error RPC failed curl 28 LibreSSL SSL read Operation timed out errno 60 fatal expected
  • Java学习 - 黑马 - 随堂笔记 - 09_数组

    Java学习 黑马 随堂笔记 09 数组 1 数组定义格式 3 1 数组概述 a 61 100 b 61 100 c 61 100 d 61 100 e 61 100 一次性声明大量的用于存储数据的变量要存储的数据通常都是同类型数据 xff
  • C#WinForm窗体控件学习(一)

    C 中WinForm窗体常见控件 一 常用控件一般都有以下属性和事件 属性 1 Name xff1a 控件的名称属性 xff0c 识别不同空间的唯一标识 2 Text xff1a 文本输入 3 Font xff1a 控件里字体的属性 xff
  • Java学习 - 黑马 - 随堂笔记 - 10_方法

    Java学习 黑马 随堂笔记 10 方法 1 方法概述 1 1 什么是方法 方法 xff08 method xff09 是将具有独立功能的代码块组织成为一个整体 xff0c 使其具有特殊功能的代码集 注意 xff1a 方法必须先创建才可以使
  • Java学习(b站基础) - 狂神说 - 目录总章

    Java学习 xff08 b站基础 xff09 狂神说 目录总章 本内容仅为个人看视频记录的随手笔记 xff0c 部分内容可能不全面 xff0c 可以作为学习狂神说视频之后进行复习巩固使用 Markdown学习笔记 xff08 简单的部分M
  • Java学习 - 黑马 - 随堂笔记 - 11_Debug

    Java学习 黑马 随堂笔记 11 Debug 1 Debug 1 1 Debug概述 Debug xff1a 是供程序员使用的程序调试工具 xff0c 它可以用于查看程序的执行流程 xff0c 也可以用于追踪程序执行过程来调试程序 1 2
  • Java学习 - 黑马 - 随堂笔记 - 12_基础知识练习

    Java学习 黑马 随堂笔记 12 基础知识练习 1 案例 xff1a 减肥计划 案例 xff1a 减肥计划 xff08 if xff09 需求 xff1a 输入星期数 xff0c 显示今天的减肥活动 周一 xff1a 跑步 周二 xff1
  • Java学习 - 黑马 - 随堂笔记 - 13_面向对象基础

    Java学习 黑马 随堂笔记 13 面向对象基础 1 类和对象 1 1 什么是对象 万物皆对象 xff0c 客观存在的事物皆为对象 1 2 什么是面向对象 1 3 什么是类 类是对现实生活中一类具有共同属性和行为的事物的抽象 类的特点 xf
  • Java学习 - 黑马 - 随堂笔记 - 14_字符串

    Java学习 黑马 随堂笔记 14 字符串 1 API 1 1 API概述 API Application Programming Interface xff1a 应用程序编程接口 编写一个机器人变成去控制机器人踢足球 xff0c 程序需要
  • Java学习 - 黑马 - 随堂笔记 - 15_集合基础

    Java学习 黑马 随堂笔记 15 集合基础 1 集合基础 1 1 集合概述 编程的时候如果要存储多个数据 xff0c 使用长度固定的数组存储格式 xff0c 不一定满足我们的需求 xff0c 更适应不了变化的需求 xff0c 那么 xff
  • Java学习 - 黑马 - 随堂笔记 - 16_学生管理系统

    Java学习 黑马 随堂笔记 16 学生管理系统 1 学生管理系统 1 1 项目演示 1 2 学生管理系统实现思路 定义学生类主界面的代码编写添加学生的代码编写查看学生的代码编写删除学生的代码编写修改学生的代码编写 1 3 定义学生类 学生
  • Java学习 - 黑马(第二部分) - 随堂笔记 - 01_继承

    Java学习2 黑马 xff08 第二部分 xff09 随堂笔记 01 继承 1 继承 1 1 继承概述 继承是面向对象三大特征之一 可以使得子类具有父类的属性和方法 xff0c 还可以在子类中重新定义 xff0c 追加属性和方法 继承的格
  • Java学习 - 黑马(第二部分) - 随堂笔记 - 02_修饰符

    Java学习 黑马 xff08 第二部分 xff09 随堂笔记 02 修饰符 1 包 1 1 包的概述和使用 其实就是文件夹 作用 xff1a 对类进行分类管理 包的定义格式 格式 xff1a package 包名 xff08 多级包用 分
  • Java学习 - 黑马(第二部分) - 随堂笔记 - 03_多态

    Java学习 黑马 xff08 第二部分 xff09 随堂笔记 03 多态 1 多态 1 1 多态概述 同一个对象 xff0c 在不同时刻表现出来的不同形态 举例 xff1a 猫 我们可以说猫是猫 xff1a 猫 cat 61 new 猫
  • Java学习 - 黑马(第二部分) - 随堂笔记 - 04_抽象类

    Java学习 黑马 xff08 第二部分 xff09 随堂笔记 04 抽象类 1 抽象类 1 1 抽象类概述 在Java中 xff0c 一个没有方法体的方法应该定义为抽象方法 xff0c 而类中如果有抽象方法 xff0c 该类必须定义为抽象
  • Java学习 - 黑马(第二部分) - 随堂笔记 - 05_接口

    Java学习 黑马 xff08 第二部分 xff09 随堂笔记 05 接口 1 接口 接口就是一种公共的规范标准 xff0c 只要符合规范标准 xff0c 大家都可以通用 Java中的接口更多的体现在对行为的抽象 1 2 接口的特点 接口用

随机推荐

  • Java学习 - 黑马(第二部分) - 随堂笔记 - 06_形参和返回值

    Java学习 黑马 xff08 第二部分 xff09 随堂笔记 06 形参和返回值 形参和返回值 1 1 类名作为形参和返回值 方法的形参是类名 xff0c 其实需要的是该类的对象方法的返回值是类名 xff0c 其实返回的是该类的对象 pa
  • Java学习 - 黑马(第二部分) - 随堂笔记 - 07_内部类

    Java学习 黑马 xff08 第二部分 xff09 随堂笔记 07 内部类 1 内部类 1 1 内部类概述 内部类 xff1a 就是在一个类中定义一个类 举例 xff1a 在一个类A的内部定义一个类B xff0c 类B就被称为内部类 内部
  • Java学习 - 黑马(第二部分) - 随堂笔记 - 08_常用API

    Java学习 黑马 xff08 第二部分 xff09 随堂笔记 08 常用API 1 Math 1 1 Math类概述 Math包含执行基本数字运算的方法 没有构造方法 xff0c 如何使用类中的成员呢 xff1f 通过查看帮助文档 看类的
  • Java学习 - 黑马 - 随堂笔记 - 第二部分总目录

    Java学习 黑马 随堂笔记 第二部分总目录 本内容仅为个人看视频记录的随手笔记 xff0c 部分内容可能不全面 xff0c xff0c 可以作为学习黑马程序员Java基础视频参考使用或者看完之后进行复习巩固使用 Java学习 黑马 xff
  • Java学习 - 黑马 - 随堂笔记 - 第一部分总目录

    Java学习 黑马 随堂笔记 第一部分总目录 本内容仅为个人看视频记录的随手笔记 xff0c 部分内容可能不全面 xff0c xff0c 可以作为学习黑马程序员Java基础视频参考使用或者看完之后进行复习巩固使用 Java学习 黑马 随堂笔
  • Java学习 - 黑马(第二部分) - 随堂笔记 - 09_异常

    Java学习 黑马 xff08 第二部分 xff09 随堂笔记 09 异常 1 异常 1 1 异常概述 package com itheima 01 import java lang reflect Method 异常 public cla
  • MATLAB2021b详细安装教程

    1 下载软件安装包 2 安装 下载安装包后打开iso文件 xff0c 若是无法打开请用解压软件打开 打开MATLAB R2021b win64 xff0c 双击软件开始安装 一直点击下一步 xff0c 直到步骤 选择我已有我的许可证的文件密
  • 新睿云科普:什么叫云技术?云技术是如何发展到如今的?

    云技术是计算机系统资源 xff08 尤其是数据存储和计算能力 xff09 的按需可用性 xff0c 而无需用户直接进行主动管理 该术语通常用于描述Internet上可供许多用户使用的数据中心 在当今占主导地位的大型云通常具有从中央服务器分布
  • 酷炫cmd命令行工具——windows terminal的详细配置

    官网配置地址 xff1a An overview on Windows Terminal Microsoft Docs 目录 一 Windows terminal安装与基本操作 1 Windows Terminal下载 2 不同命令行工具切
  • RIME中州韵输入法词库扩充(搜狗词库,QQ拼音词库,清华词库,拆字词库U模式等)

    Rime输入法作为一款高度自定义的本地输入法 xff0c 词库的配置尤为重要 1 Rime输入法词库格式 Rime输入法的词库在用户配置文件夹下 xff0c 是以 dict yaml结尾的文件 2 Rime输入法词库如何调用 Rime可以扩
  • 超全超详细Rime中州韵输入法配置指南

    1 为什么选择RIME 市面上具有众多的输入法 xff0c 无论搜狗还是QQ输入法基本都大同小异 xff0c 但RIME是众多输入法中一个特殊的存在 之所以特殊 xff0c 原因在于 xff0c 绝大部份输入法工具 xff0c 长什么样 能
  • MATLAB2022a更新了,看MATLAB2022详细安装教程

    MATLAB是很多学生党 xff0c 科研人需要的工具 xff0c 这款软件每年更新两次 xff0c 上半年为年份 43 a xff0c 下半年为年份 43 b xff0c 2022a如约而至 这次更新包含了 5 款新产品和 11 项重要更
  • 中国计算机设计大赛作品(附代码与设计书,答辩PPT)

    1 主界面 2 目录界面 3 离散信号的产生 4 离散信号的基本变换及运算 变换 运算 5 离散信号的卷积运算 6 离散信号的卷积运算 7 系统稳定性分析 8 傅立叶变换 9 FIR滤波器设计 10 IIR滤波器设计 11 语音去噪处理 录
  • 更改pip镜像源的多种方法

    目前可用的pip国内镜像源有下面这些 xff1a 阿里云 http mirrors aliyun com pypi simple 中国科技大学 https pypi mirrors ustc edu cn simple 豆瓣 http py
  • 详细介绍MATLAB导入文本文件、excel等数据文件

    一 通过导入工具导入 选择导入工具 选择文件 二 通过函数uiimport导入 xff08 推荐 xff09 使用uiimport导入数据比较方便 xff0c 输入后会自动弹出对话框选择文件或者剪贴板内容 进阶命令如下 xff1a uiim
  • 机器学习(一):概述

    机器学习近年来发展迅速 xff0c 那什么是机器学习呢 xff1f 其实机器学习在我们每天的生活 工作中都随处可见机器学习的应用 比如你每天打开手机 xff0c 无论是打开短视频软件 xff0c 还是逛购物软件 xff0c 这些里面都是包含
  • 机器学习(二):聚类算法1——K-means算法

    Kmeans是一种经典的聚类算法 xff0c 所谓聚类 xff0c 是指在没有给出目标的情况下 xff0c 将样本根据某种关系分为某几类 那在kmeans中 xff0c 是根据样本点间的距离 xff0c 将样本n分为k个类 K means实
  • 调制中的归一化因子如何计算?

    归一化因子的作用 xff1a 将功率 xff08 能量 xff09 进行归一化处理 添加功率归一化因子 xff0c 目的在于使得不同调制方式 xff08 或者说对于所有映射方式 xff09 都能够取得相同的平均功率 归一化因子 计算公式 x
  • 画图软件origin-柱状图断点设置

    OriginLab为中国学生提供了 免费半年正版中文 OriginPro xff1b 注册完毕后登录学校邮箱 xff0c 请根据邮件提示完成安装注册即可 xff0c 然后会发送安装教程给你 下载 xff0c 并安装典型使用方法 2 1 柱状
  • plot无法画图---已解决

    项目场景 xff1a plot画图 BUG两则 记录小bug xff1a 问题描述 用vscode开发中 xff0c 需要进行plot输出 xff0c 之前一直没问题 xff0c 近日plot无输出 xff0c 程序直接结束 xff0c 不