Python爬蟲、資料分析、網站開發等案例教程視訊免費線上觀看
https://space.bilibili.com/523606542
Python學習交流群:1039649593
雷達圖
雷達圖(Radar Chart)又被叫做蜘蛛網圖,适用于顯示三個或更多的次元的變量的強弱情況。比如英雄聯盟中某個影響的屬性(法術傷害,實體防禦等),或者是某個企業在哪些業務方面的投入等,都可以用雷達圖友善的表示。
使用plt.polar繪制雷達圖:
在
matplotlib.pyplot
中,可以通過
plt.polar
來繪制雷達圖,這個方法的參數跟
plt.plot
非常的類似,隻不過是
x
軸的坐标點應該為弧度(2*PI=360°)。示例代碼如下:
properties = ['輸出','KDA','發育','團戰','生存']
values = [40,91,44,90,95,40]
theta = np.linspace(0,np.pi*2,6)
plt.polar(theta,values)
plt.xticks(theta,properties,fontproperties=font)
plt.fill(theta,values)
效果圖如下:
其中有幾點需要注意:
- 因為polar并不會完成線條的閉合繪制,是以我們在繪制的時候需要在theta中和values中在最後多重複添加第0個位置的值,然後在繪制的時候就可以和第1個點進行閉合了。
- polar隻是繪制線條,是以如果想要把裡面進行顔色填充,那麼需要調用fill函數來實作。
- polar預設的圓圈的坐标是角度,如果我們想要改成文字顯示,那麼可以通過xticks來設定。
使用子圖繪制雷達圖:
在多子圖中,繪圖對象不再是
pyplot
而是
Axes
,而
Axes
及其子類繪制雷達圖則是通過将直角坐标轉換成極坐标,然後再繪制折線圖。示例代碼如下:
使用
plt.subplot
繪制的子圖:
properties = ['輸出','KDA','發育','團戰','生存']
values = [40,91,44,90,95,40]
theta = np.linspace(0,np.pi*2,6)
# 生成一個子圖,并且指定子圖的類型為polar
axes = plt.subplot(111,projection="polar")
axes.plot(theta,values)
axes.fill(theta,values)
使用plt.subplots繪制的子圖:
properties = ['輸出','KDA','發育','團戰','生存']
values = [40,91,44,90,95,40]
theta = np.linspace(0,np.pi*2,6)
figure,axes = plt.subplots(1,1,subplot_kw={"projection":"polar"})
axes.plot(theta,values)
使用fig.add_subplot繪制的子圖:
properties = ['輸出','KDA','發育','團戰','生存']
values = [40,91,44,90,95,40]
theta = np.linspace(0,np.pi*2,6)
fig = plt.figure(figsize=(10,10))
axes = fig.add_subplot(111,polar=True)
axes.plot(theta,values)