Pycharm使用matplotlib报错:TypeError: vars() argument must have __dict__ attribute 解决方法

article/2025/11/9 16:27:28

Pycharm使用matplotlib绘图时报错


问题描述

TypeError: vars() argument must have __dict__ attribute

源程序:

# -*- encoding: utf-8 -*-
'''
@File    :   MaLearnTest01_1.py
@Time    :   2023/03/03 09:39:05
@Author  :   seveN1foR
@Version :   1.0
@Contact :   sevencdxxiv@qq.com
'''# here put the import libimport numpy as np
import matplotlib as mpl
import matplotlib.pyplot as pltdef draw(FillStyle):x_coords = np.linspace(-100, 100, 500)y_coords = np.linspace(-100, 100, 500)points = []for y in y_coords:for x in x_coords:if ((x * 0.03) ** 2 + (y * 0.03) ** 2 - 1) ** 3 - (x * 0.03) ** 2 * (y * 0.03) ** 3 <= 0:  # 引用公式points.append({"x": x, "y": y})heart_x = list(map(lambda point: point["x"], points))heart_y = list(map(lambda point: point["y"], points))if FillStyle == 1:plt.scatter(heart_x, heart_y, s=10, alpha=0.5)else:plt.scatter(heart_x, heart_y, s=10, alpha=0.5, c=range(len(heart_x)), cmap='autumn')plt.show()print(mpl.get_backend())# 主过程
fStyle = 2
draw(fStyle)

运行结果:

在这里插入图片描述


原因分析:

在 PyCharm(至少在科学项目中)使用交互式控制台运行所有文件,其中使用了后端 module://backend_interagg。 这个后端会导致与您相同的错误。所以。 在你的文件头部添加 mpl.use(‘TkAgg’) ,或者检查你可以使用哪个后端并在此函数中传递这些名称。


解决方案:

在你的文件头部添加 mpl.use(‘TkAgg’) ,或者检查你可以使用哪个后端并在此函数中传递这些名称。
但是在某些情况下,TkAgg 可能不可用。 第一次检查时,您使用的是哪个后端。 为此,运行这个简单的代码:

import matplotlib as mpl
print(mpl.get_backend())

你必须在 PyCharm 之外的默认终端中手动运行。 (例如创建简单的 test.py 文件,粘贴代码,然后运行 python test.py)

头部添加use后的代码:

# -*- encoding: utf-8 -*-
'''
@File    :   MaLearnTest01_1.py
@Time    :   2023/03/03 09:39:05
@Author  :   seveN1foR
@Version :   1.0
@Contact :   sevencdxxiv@qq.com
'''# here put the import libimport numpy as np
import matplotlib as mpl
import matplotlib.pyplot as pltmpl.use('TkAgg')  # !IMPORTANT 更改在这里!!!!!!!!!
"""
Why? Because PyCharm (at least in scientific projects) runs all files with an interactive console, 
where backend module://backend_interagg is used. 
And this backend causes the same error as you have.
So. add mpl.use('TkAgg') in head of your file, 
or checkout which backend you can use and past those name in this function.
"""def draw(FillStyle):x_coords = np.linspace(-100, 100, 500)y_coords = np.linspace(-100, 100, 500)points = []for y in y_coords:for x in x_coords:if ((x * 0.03) ** 2 + (y * 0.03) ** 2 - 1) ** 3 - (x * 0.03) ** 2 * (y * 0.03) ** 3 <= 0:  # 引用公式points.append({"x": x, "y": y})heart_x = list(map(lambda point: point["x"], points))heart_y = list(map(lambda point: point["y"], points))if FillStyle == 1:plt.scatter(heart_x, heart_y, s=10, alpha=0.5)else:plt.scatter(heart_x, heart_y, s=10, alpha=0.5, c=range(len(heart_x)), cmap='autumn')plt.show()print(mpl.get_backend())# 主过程
fStyle = 2
draw(fStyle)

运行结果:

在这里插入图片描述

参考文章源地址:

https://stackoverflow.com/questions/75453995/pandas-plot-vars-argument-must-have-dict-attribute


http://chatgpt.dhexx.cn/article/ttagdyks.shtml

相关文章

JMeter常用内置对象:vars、ctx、prev

在前文 Beanshell Sampler 与 Beanshell 断言 中&#xff0c;初步阐述了JMeter beanshell的使用&#xff0c;接下来归集整理了JMeter beanshell 中常用的内置对象及其使用。 注&#xff1a;示例使用JMeter版本为5.1 1 vars 如 API 文档 所言&#xff0c;这是定义变量的类&am…

jmeter内置变量 vars 和props使用详解

vars和props都是jmeter的内置变量&#xff0c;且本质都是Map类型 用python语言来理解的话&#xff0c;就是字典格式 最主要两点的区别&#xff1a; vars 只能在当前线程组内使用&#xff0c;props 可以跨线程组使用 vars 只能保持String 或者Objec&#xff0c; props 是 Hash…

Ansible中vars(变量)定义

1、变量使用的原因 playbook的编写是使用yml的语法&#xff0c;虽然该语法规则较为简单&#xff0c;但是&#xff0c;同其他语法相同该语法也有变量、循环等机制的使用。变量的使用就是为了提高我们所写剧本的复用性&#xff08;当某个参数更改时&#xff0c;直接更改变量的赋…

vue3解决no-unused-vars报错

vue3解决no-unused-vars 前言添加配置 前言 在上一节&#xff0c;针对 vue3配置了ESLint&#xff0c;此时&#xff0c;App.vue 和 HelloWorld.vue 报了一个 no-unused-vars 的错误。 添加配置 vue3 是尤大写的&#xff0c;参考下尤大的配置&#xff1a;.eslintrc.js {no-u…

Jmeter内置变量vars和props

在使用jmeter作接口测试时&#xff0c;有些参数并不是明文直接传递的&#xff0c;须编码或加密后传输。此时可以使用BeanShell取样器、BeanShell前置和后置处理器等对参数进行加工处理。 vars和props都是jmeter的内置变量&#xff0c;不必先定义&#xff0c;可以直接使用 二者…

Jmeter 的 vars 和 props 用法

Jmeter 的 JSR223 控件是 代替 BeanShell 的新一代脚本控件&#xff0c;支持多种脚本语言&#xff0c;尤其是其中的 Groovy&#xff0c;更是重点推荐使用的脚本语言&#xff0c;本文研究其中的 vars 和 props 两种对象的用法。 props 和 vars 主要有两点区别&#xff1a; vars…

optistruct中的DRESP2响应设置

1.先编写自己的函数公式 函数名后面的括号中要有式中包含的变量 2.定义响应&#xff0c;类型选择为function&#xff0c;dequation选择刚才设置的函数 点击edit&#xff0c;输入函数表达式中变量对应的响应个数&#xff0c;并分别选择对应哪个响应 返回&#xff0c;点击cr…

结构优化设计with OPtiStruct

上手OptiStruct做结构优化设计&#xff0c;借助该软件强大的优化运算功能&#xff0c;已经成为行业的主流结构优化工具。因此&#xff0c;决定整理一下简要的操作步骤&#xff0c;以备后继之需。 我目前使用的是Hyper13.0版本。 首先是通过hypermesh进行网格划分&#xff0c;其…

大学生方程式赛车借助Altair OptiStruct 实现轻量化和燃料效率提升

项目介绍 每年一届的大学生方程式汽车大赛由英国机械工程师学会 (IMechE) 在英国一级方程式银石赛道举办。来自世界 38 个国家/地区的 178 支报名队伍将在 2014年展开激烈的角逐。想要获得胜利&#xff0c;各队需要展现出他们在技术、工程、设计和制造方面的高超技艺。他们还要…

Hypermesh案例学习笔记

根据我要自学网Hypermesh2017教程&#xff0c;1-10~1-13课程学习笔记 面板介绍 直接放教程里的图了 模型静力分析 模型导入与简化 尽量使用板壳单元&#xff0c;因此抽取模型中面&#xff1a; 点一下模型&#xff0c;点extract就可以得到中面的部件集 为了使网格均匀&am…

HyperMesh有限元分析报错集锦

1. 用hypermesh中的OptiStruct来进行有限元静力学分析&#xff0c;出现一个错误&#xff0c;错误代号61 Error 61: No elements found in input data 解决办法&#xff1a;如果你已经设置好材料、属性&#xff0c;并且为单元赋予了属性&#xff0c;定义了载荷步&#xff0c;在…

hyperstudy联合matlab,在Hyperworks中使用HyperStudy进行多学科优化研究 | 坐倚北风

本文介绍使用Hyperworks中的HyperStudy进行多学科尺寸优化的方法。所使用模型为Hyperworks帮助文档tutorials\hst\HS-4210中的plate1. tpl和plate2. tpl。这两个模型均为使用Optistruct求解器创建的平板有限元分析模型。 该模型由三个部件组成,设计变量为该三个部件对应的板壳…

hypermesh分析流程

对于CAE初学者来说&#xff0c;hypermesh是一个很适合的工具&#xff0c;既可以作为其他分析软件的输入&#xff0c;自带的求解器也能取得很精确的结果&#xff0c;本文是作者的一些实用心得&#xff0c;全是干货。学习一个软件时&#xff0c;软件的操作可以慢慢摸索&#xff0…

Cuda编程-04 计算单元结构

Tesla架构计算单元 如下图&#xff0c;为Tesla架构芯片构造图&#xff1a; 其中需要重点关注的部件为&#xff1a;流多处理器(Stream Multiprocessor&#xff0c;SM)&#xff0c;流处理器(Streaming Processor&#xff0c;SP)。在该GPU中&#xff0c;最核心的执行单元为SP&…

【有限元分析】焊缝疲劳分析-热点应力插值法-hypermesh+ncode

一、焊缝疲劳分析整体流程&#xff1a; &#xff08;对于需要调整壁厚的模型&#xff0c;可以通过导入已经修改后的模型&#xff0c;通过project命令将网格拉伸至surf即可&#xff0c;相比重新画简单&#xff09; 1、建立CDB模型&#xff0c;验算极限强度 2、建立六个自由度…

python计算复合材料层合板ABD刚度矩阵、预测层合板强度

鄙人不才&#xff0c;在学校的时候没有学python&#xff0c;复合材料力学也是一知半解&#xff0c;后来工作的时候遇到了需要计算复合材料层合板ABD刚度矩阵的内容&#xff0c;然后恰好在学习python&#xff0c;于是花时间编写了下预测这方面的内容&#xff0c;然后后期还编写了…

基于Hypermesh、Nastran、Abaqus、LS_Dyna和Femfat的电池包仿真分析

基于Hypermesh、Nastran、Abaqus、LS_Dyna和Femfat的电池包仿真分析 动力电池作为新能源车动力系统的重要组成部分,电池包作为电池的支撑载体,起到保护电池组正常工作的作用,其结构安全性不容忽视。 本套课程采用Hypermesh、Optistruct、Nastran、Abaqus、LS_Dyna和Femfat软件对…

连续体结构拓扑优化方法介绍

连续体结构拓扑优化方法介绍 材料的有效利用一直是人类追求的目标&#xff0c;也是许多研究领域不变的话题&#xff0c;并伴随着结构优化理论和方法的产生而发展。早期结构优化主要是针对尺寸的优化问题&#xff0c;设计域形状是固定的。后来随着结构优化问题的提出&#xff0…

HyperWorks2021软件安装教程

下载软件 https://www.xsoftnet.com/share/a0004MWyQAg9r.html产品介绍&#xff1a; HyperWorks一款功能强大的开放式架构仿真软件。拥有先进的技术以及高性能、高效和创新的产品&#xff0c;为用户提供了设计、仿真和制造等服务。支持电磁分析设计、材料建模制造、多物理场分…

基于ABAQUS和Optistruct汽车结构惯性释放分析详解

导读&#xff1a;惯性释放是允许对完全无约束的结构进行静力分析。通常我们做线性静力分析需要保证结构没有刚**移&#xff0c;否则求解器没有办法计算。但是很多分析&#xff0c;例如飞机在飞行时&#xff0c;轮船在航行&#xff08;物体整体具有加速度&#xff09;时&#xf…