Python错题集-4:NameError:(变量名错误)

1问题描述

Traceback (most recent call last):
  File "D:\pycharm\projects\1-可视化学习\8.3更改小提琴图的中位数、均值、颜色等.py", line 8, in <module>
    violin_parts = plt.violinplot(data, showmedians=True, showmeans=True)
                                  ^^^^
NameError: name 'data' is not defined

2代码详情

# 导入相关库
import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化


plt.figure(dpi=120)
# 绘制小提琴图,data是数据源,showmedians和showmeans参数分别控制是否显示中位数和均值线
violin_parts = plt.violinplot(data, showmedians=True, showmeans=True)
# 获取小提琴图的中位数线,并设置其边缘颜色为红色
vmedian = violin_parts['cmedians']
vmedian.set_edgecolor('r')
# 获取小提琴图的均值线,并设置其边缘颜色为黑色
vmean = violin_parts['cmeans']
vmean.set_edgecolor('k')
# 获取小提琴图的箱体部分(即除去尾部的曲线部分),并设置其边缘颜色为黑色
vbars = violin_parts['cbars']
vbars.set_edgecolor('k')
# 获取小提琴图的最大值线(即箱体上边缘),并设置其边缘颜色为深橙色
vmax = violin_parts['cmaxes']
vmax.set_edgecolor('darkorange')
# 获取小提琴图的最小值线(即箱体下边缘),并设置其边缘颜色为深橙色
vmin = violin_parts['cmins']
vmin.set_edgecolor('darkorange')
# 显示图形窗口,此时会弹出一个窗口显示绘制的小提琴图
plt.show()

3问题剖析

NameError 在 Python 中是一个异常类型,它表示尝试访问一个未被定义或不可访问的变量名。当 Python 解释器在尝试查找一个变量或函数名时,如果在当前的符号表(即名称空间)中找不到这个名字,就会抛出 NameError 异常。

1.变量未定义:如果你尝试使用一个尚未被赋值的变量,就会触发 NameError

print(x)  # NameError: name 'x' is not defined

2.拼写错误:如果你尝试访问的变量名拼写错误,也会导致 NameError

y = 10  
print(y1)  # NameError: name 'y1' is not defined

3.作用域问题:如果变量在尝试访问它的作用域之外定义,也会引发 NameError

def func():  
    z = 20  

func()  
print(z)  # NameError: name 'z' is not defined

4.导入错误:当尝试从模块中导入不存在的对象时,也会引发 NameError

from some_module import non_existent_object  
# NameError: name 'non_existent_object' is not defined in module 'some_module'

4问题解决

  • 确保变量在使用前已经被定义和赋值。
  • 检查变量名的拼写是否正确。
  • 确保你正在访问的变量在当前的作用域内是可访问的。
  • 如果从模块导入,请确保模块中确实存在你想导入的对象。

5代码修改

通过检查,属于变量未定义

data = [np.random.normal(0, std, 100) for std in range(10, 14)]

5全文代码

# 导入相关库
import numpy as np  # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt  # 导入matplotlib的绘图模块,用于可视化

data = [np.random.normal(0, std, 100) for std in range(10, 14)]
plt.figure(dpi=120)
# 绘制小提琴图,data是数据源,showmedians和showmeans参数分别控制是否显示中位数和均值线
violin_parts = plt.violinplot(data, showmedians=True, showmeans=True)
# 获取小提琴图的中位数线,并设置其边缘颜色为红色
vmedian = violin_parts['cmedians']
vmedian.set_edgecolor('r')
# 获取小提琴图的均值线,并设置其边缘颜色为黑色
vmean = violin_parts['cmeans']
vmean.set_edgecolor('k')
# 获取小提琴图的箱体部分(即除去尾部的曲线部分),并设置其边缘颜色为黑色
vbars = violin_parts['cbars']
vbars.set_edgecolor('k')
# 获取小提琴图的最大值线(即箱体上边缘),并设置其边缘颜色为深橙色
vmax = violin_parts['cmaxes']
vmax.set_edgecolor('darkorange')
# 获取小提琴图的最小值线(即箱体下边缘),并设置其边缘颜色为深橙色
vmin = violin_parts['cmins']
vmin.set_edgecolor('darkorange')
# 显示图形窗口,此时会弹出一个窗口显示绘制的小提琴图
plt.show()

图像显示为: 

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Py小趴

整理不易,感谢金主!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值