1. 程式人生 > 程式設計 >matplotlib製作雷達圖報錯ValueError的實現

matplotlib製作雷達圖報錯ValueError的實現

在教材例項編寫雷達圖時出現ValueError,具體如下:

ValueError: The number of FixedLocator locations (7),usually from a call to set_ticks,does not match the number of ticklabels (6).

而原始碼如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
labels = np.array(['綜合','KDA','發育','推進','生存','輸出'])
nAttr = 6
data = np.array([7,5,6,9,8,7])
angles = np.linspace(0,2*np.pi,nAttr,endpoint=False)
data = np.concatenate((data,[data[0]]))
angles = np.concatenate((angles,[angles[0]]))
fig = plt.figure(facecolor="white")
plt.subplot(111,polar=True)
plt.plot(angles,data,'bo-',color ='g',linewidth=2)
plt.fill(angles,facecolor='g',alpha=0.25)
plt.thetagrids(angles*180/np.pi,labels)
plt.figtext(0.52,0.95,'DOTA能力值雷達圖',ha='center')
plt.grid(True)
plt.show()

原因在於對array型別data、angles進行封閉時,未對labels進行相同操作,導致labels內元素個數與前兩者不相同,從而出現ValueError。

之前在網上尋找解決方案,發現大多數答主選著將對data、angles進行封閉的語句註釋掉,但這樣就會導致雷達圖不完整,缺少一條連線:

不完整的雷達圖

而只需對labels同樣進行封閉即可:

data = np.concatenate((data,[angles[0]]))
labels=np.concatenate((labels,[labels[0]]))  #對labels進行封閉

最終執行結果

matplotlib製作雷達圖報錯ValueError的實現

到此這篇關於matplotlib製作雷達圖報錯ValueError的實現的文章就介紹到這了,更多相關matplotlib 雷達圖報錯 內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!