Deepin - Pycharm调试记录 - Matplot3D动态画图报错问题

写在开头的话

应该不会有人傻到看这个wiki吧,我花了1个小时才发现问题,是我自己方法调错了。


这个wiki不会细致的教大家如何使用matplotlib进行动态画图,或者动态画图的几种办法,记录一下花了一个小时左右调试出动态画图bug,希望如果有人遇到这个问题可以借鉴一下。和上一篇文章Pyinstaller索引系统库问题一样,最终的思路还是阅读源码。前面看github各种开源代码和matplotlib的文档浪费了太多时间不如直接阅读源码效率高。

现象

我有一个画图函数,放置在3D画布上进行构图,初始化函数如下:这是一个3D构图,
其中,
self.xedges 是x坐标
self.yedges是y坐标
self.hist是z坐标
self.color_list是颜色图

class MyFigure(FigureCanvas):def __init__(self, width=5, height=4, dpi=100):self.fig = Figure(figsize=(width, height), dpi=dpi)super(MyFigure, self).__init__(self.fig)self.axes = self.fig.add_subplot(111, projection='3d')# 设置x轴取值self.xedges = np.array([[10, 20], [10, 20], [10, 20], [10, 20],[20, 30], [20, 30], [20, 30], [20, 30],[30, 40], [30, 40], [30, 40], [30, 40],[40, 50], [40, 50], [40, 50], [40, 50]])# 设置y轴取值self.yedges = np.array([[10, 20], [20, 30], [30, 40], [40, 50],[10, 20], [20, 30], [30, 40], [40, 50],[10, 20], [20, 30], [30, 40], [40, 50],[10, 20], [20, 30], [30, 40], [40, 50],[10, 20], [20, 30], [30, 40], [40, 50]])# 设置X,Y对应点的值。即原始数据。self.hist = np.array([[3.0], [0.0], [8.0], [4.0],[2.0], [4.0], [5.0], [7.0],[9.0], [2.0], [6.0], [3.0],[0.0], [3.0], [1.0], [0.0]])self.color_list = ['skyblue', 'lightgreen', 'bisque', 'gold','lightgreen', 'bisque', 'gold', 'lightpink','bisque', 'gold', 'lightpink', 'plum','gold', 'lightpink', 'plum', 'lightgray']

实际绘图函数在这里,是一个for循环,原来画2D图时候,直接调用draw()方法就可以完成动态图绘制。但是现在调用时候,报错。

    def plot_city_line(self):for i in range(len(self.xedges)):# 设置作图点的坐标xpos, ypos = np.meshgrid(self.xedges[i][:-1] - 2.5, self.yedges[i][:-1] - 2.5)xpos = xpos.flatten('F')ypos = ypos.flatten('F')zpos = np.zeros_like(xpos)# 设置柱形图大小dx = 5 * np.ones_like(zpos)dy = dx.copy()dz = self.hist[i].flatten()# 设置坐标轴标签self.axes.set_xlabel('side')self.axes.set_ylabel('front')self.axes.set_zlabel('height')self.axes.bar3d(xpos, ypos, zpos, dx, dy, dz, color=self.color_list[i], zsort='average')self.axes.draw()

解决办法

重新调试的时候发现,draw() 方法是针对figure来说的,而不是针对于坐标轴来说的,因此,使用

self.draw()

或者

self.figure.canvas.draw()

都可以完成画图

源码

^ _ ^,是我自己代码一开始写错了纠结了半天,好坑阿!
参考代码路径

./venv/Lib/site-packages/mpl_toolkits/tests/test_mplot3d.py

第666行左右的函数

def test_patch_modification():fig = plt.figure()ax = fig.add_subplot(projection="3d")circle = Circle((0, 0))ax.add_patch(circle)art3d.patch_2d_to_3d(circle)circle.set_facecolor((1.0, 0.0, 0.0, 1))assert mcolors.same_color(circle.get_facecolor(), (1, 0, 0, 1))fig.canvas.draw()assert mcolors.same_color(circle.get_facecolor(), (1, 0, 0, 1))

[Deepin - Pycharm调试记录] Matplot3D动态画图报错问题相关推荐

  1. [Deepin - Pycharm调试记录] Pyinstaller索引系统库问题

    Deepin - Pycharm调试记录 - Pyinstaller索引不到系统库 现象 在Pycharm的Terminal中执行Pyinstaller指令时候遇到如下报错提示 OSError: Py ...

  2. 【错误记录】VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 ② | 删除交换空间 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 [错误记录]VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 ) 博客中 , 给出了解决方案 ...

  3. ionic4 背景设置动态图片报错WARNING: sanitizing unsafe style value background-image:url

    ionic4 背景设置动态图片报错WARNING: sanitizing unsafe style value background-image:url WARNING: sanitizing uns ...

  4. 20150430 调试分析之 根据内核报错信息栈信息分析错误

    20150430 调试分析之 根据内核报错信息栈信息分析错误 2015-04-30 Lover雪儿 还是沿用上篇文章的程序,继续研究内核报错信息 文章地址:http://www.cnblogs.com ...

  5. 记录一次etcd报错: listen tcp xxx.xxx.xxx.xxx:2380:bind: cannot assign requested address

    记录一次etcd报错 背景 问题定位 问题排查 解决方案 小结 背景 今天打算在腾讯云环境上安装k8s(采用ansible脚本自动化部署安装),当安装完etcd之后,发现启动报错. 机器:腾讯云服务器 ...

  6. 记录华夏ERP配置报错

    记录华夏ERP配置报错 目录 后端 java: diamond operator is not supported in -source 1.5 java: Compilation failed: i ...

  7. K8S 1.18.0 以及KubeEdge 1.10.3 三机安装部署(含过程记录及遇到的报错和解决方法)

    因为网络上大多数教程只有部署相关的命令,而无输入命令后正确界面的显示样例,因此在参考网络上教程并跟随实现的过程中,我将过程进行截图记录,供大家参考.希望对大家有帮助~ 一. K8S部署 选用了三台虚拟 ...

  8. 想运行游戏,在Pycharm中安装Pygame库一直报错,我只是忽视了它

    问题:本机电脑中已经安装好了Python3.7版本.相应版本的Pygame软件以及pip配置.结果在Pycharm环境中安装Pygame总是报错. 按照常规Pycharm安装Pygame,新建项目Fi ...

  9. 记录一次wagon报错Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0:upload-single

    记录一次wagon报错Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0:upload-single (default-cl ...

最新文章

  1. [转载]Mysql数据库千万级数据处理优化
  2. python基础教程 pdf github_python基础教程之Jupyter导出PDF从入门到绝望(已解|python基础教程|python入门|python教程...
  3. 洛谷1527(bzoj2738)矩阵乘法——二维树状数组+整体二分
  4. 【干货】深入B端SaaS产品设计核心理念
  5. composer 完整路径才能访问_Win7系统IIS,无法访问ASP,提示错误 '80004005'
  6. 学web前端一定要这样学,不然学完找不到工作哭都来不及!
  7. 用php生成HTML文件的类
  8. 皮尔逊相关性_皮尔逊的相关性及其在机器学习中的意义
  9. Spring Boot热部署
  10. cmake copy dll输出目录_VScode下 多文件,小工程使用cmake 速记
  11. 使用fdisk创建好了分区,但是在生成物理卷出现“Device /dev/sdb2 not found (or ignored by filtering).“解决方法
  12. 磁力链转bt种子 python_实战Python实现BT种子转化为磁力链接
  13. java获取上周一_java如何得到上周一和上周日的日期
  14. 调用链根因定位论文《Ranking causal anomalies by modeling local propagations on networked systems》
  15. 使用vue全家桶开发音乐App
  16. A Morphable Model For The Synthesis Of 3D Faces 论文解析 3DMM
  17. 程序员界的经典笑话,逗乐了
  18. 计算机867怎么学,2018年考研湖南大学867计算机系统考试大纲
  19. 深圳捷迅YL-800MT PE13管脚千万不能悬空
  20. 人工智能换脸python_Python实现AI换脸功能

热门文章

  1. 静磨机无级调速调压液压系统比例阀放大器
  2. 安卓熄屏录像_锁屏摄像app下载-锁屏摄像 安卓版v5.1.0-PC6安卓网
  3. Surging学习笔记(一)
  4. OpenCV进阶之路:神经网络识别车牌字符
  5. 劳尔,皇马永远的7号
  6. linux firefox严重卡顿,Firefox 79稳定版导致部分Mac用户陷入不明卡顿
  7. 自由职业者如何用一台电脑赚钱?
  8. 信安小白,一篇博文讲明白数字签名
  9. android酷狗下拉,Android 仿酷狗滑动控件实现 流畅运行
  10. 中星微ZC301P摄像头驱动支持