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()
圖像顯示為:?