雷達圖
雷達圖(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)