一、绘制多级雷达图

####多级雷达图绘制

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="red")
plt.subplot(111,polar=True)
plt.plot(angles,data,'bo-',color='r',linewidth=1)
plt.fill(angles,data,facecolor='g',alpha=0.25)
plt.thetagrids(angles*180/np.pi,labels)
plt.figtext(0.55,0.95,'DOTA能力值雷达',ha='center')
plt.grid(True)
plt.savefig('dota_radar.JPG')
plt.show()

运行结果

 

python雷达图坐标范围 python多级雷达图绘制解析_python雷达图坐标范围

二、代码详解

1、linspace(star,stop,num=6,endpoint=True,restep=False,dtype=None)

作用:生成在[star:stop]数据之间步长相等的num个numpy.ndarray数据类型的数组。

参数解释:

star:scale

数组开始值

stop:scale

数组结束值,当"endpoint=False"时,不包含stop的值。

num:int、optional

生成数组的个数。默认是生成50个数据

endpoint:bool、optional

如果是True,stop为数组的最后一个数据。否则,stop将不包含在数组里面。默认是True。

restep:bool、optional

如果是True,返回数的数据以及步长,否则没有返回值。默认是False。

实例:

np.linspace(0,2*pi,nAttr,endpoint = 'False')

结果:

python雷达图坐标范围 python多级雷达图绘制解析_数组_02

 2、concatenate((a1,a2,...),axis=0,out=None)

作用:连接具有相同维度的数组

参数解释:

a1,a2,...:除了与轴对应的维度(默认情况下为第一个)外,数组必须具有相同的形状。

axis:int,optional

数组将连接的轴。如果axis为None,则在使用前将数据展平。axis为0时,按横向连接。axis为1时,纵向连接。默认是为 0。

out:ndarray,optional

如果提供,则放置结果的目的地。形状必须正确,如果没有指定out参数,则匹配连接将返回的形状。

参考连接:https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.concatenate.html

实例:

import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
result = np.concatenate((a, b.T), axis=1)
result1 = np.concatenate((a,b),axis=0)
print(result,'\n','----','\n',result1)

结果:

python雷达图坐标范围 python多级雷达图绘制解析_python雷达图坐标范围_03

 3、matplotlib.pyplot.figure(num=Nonefigsize=Nonedpi=Nonefacecolor=Noneedgecolor=Noneframeon=TrueFigureClass=<class 'matplotlib.figure.Figure'>clear=False**kwargs)

 作用:创建新的图像

参数解释:

num : integer or string, optional, default: None

图像编号或名称,数字为编号 ,字符串为名称

figsize : (float, float), optional, default: None

指定figure的宽和高,单位为英寸。

facecolor :blue、red...

背景颜色。

edgecolor:blue、red...

边框颜色

frameon : bool, optional, default: True

是否显示边框,默认值为True显示边框。

4、matplotlib.pyplot.fill* argsdata = None** kwargs 

作用:绘制填充图形

参数说明:

args : x,y,[color]的序列

每个多边形由其节点的xy位置列表定义,可选地后跟颜色说明符。有关matplotlib.colors支持的颜色说明符,请参阅 标准颜色循环用于没有颜色说明符的多边形。

您可以通过提供多个xy, [颜色]组来绘制多个多边形。

ax.fill(x, y)                    # a polygon with default color
ax.fill(x, y, "b")               # a blue polygon
ax.fill(x, y, x2, y2)            # two polygons
ax.fill(x, y, "b", x2, y2, "r")  # a blue and a red polygon

** kwargs : Polygon属性,对象matplotlib.patches.Polygon的特性(class:`~matplotlib.patches.Polygon` properties)

实例:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 5 * np.pi, 50)

y1 = np.sin(x)
y2 = np.sin(2 * x)

plt.plot(x, y1, c="y")
plt.plot(x, y2, c='r')

# 将两函数间区域填充成黑色色
plt.fill_between(x, y1, y2, facecolor="black")

plt.show()

结果:

python雷达图坐标范围 python多级雷达图绘制解析_数据_04

 

 5、matplotlib.pyplot.thetagrids(*args**kwargs)

作用:获取或设置当前极坐标图上的θ网格线

参数解释:

angles : tuple with floats, degrees

θ网格线的角度

labels : tuple with strings or None

在每个径向网格线处使用的标签。projections.polar.ThetaFormatter如果没有, 将使用。

fmt : str or None

使用的格式字符串matplotlib.ticker.FormatStrFormatter。例如'%f'。请注意,将使用以弧度表示的角度。

 lines, labels : list of lines.Line2D, list of text.Text

线是theta网格线,标签是刻度线标签。

**kwargs

kwargsText标签的可选属性。

6、matplotlib.pyplot.figtext(xys*args**kwargs)

作用:设置标签

参数解释:

x, y : float

表示坐标

s : str

fontdict : dictionary, optional, default: None

withdash : boolean, optional, default: False

text : Text

**kwargs : Text properties

7、matplotlib.pyplot.grid(b=Nonewhich='major'axis='both'**kwargs)

作用:网格线显示

参数说明:

b:bool or None

bool为False时,不显示网格线,否则显示网格线。

which:{'major','minor','both'}

要应用更改的网格线。

axis:{'both','x','y'}

**kwargs : Line2D properties