一、绘制多级雷达图
####多级雷达图绘制
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()
运行结果
二、代码详解
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')
结果:
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)
结果:
3、matplotlib.pyplot.
figure
(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<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
(* args,data = None,** kwargs )
作用:绘制填充图形
参数说明:
args : x,y,[color]的序列
每个多边形由其节点的x和y位置列表定义,可选地后跟颜色说明符。有关matplotlib.colors支持的颜色说明符,请参阅 标准颜色循环用于没有颜色说明符的多边形。
您可以通过提供多个x,y, [颜色]组来绘制多个多边形。
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()
结果:
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
kwargs是Text标签的可选属性。
6、matplotlib.pyplot.
figtext
(x, y, s, *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=None, which='major', axis='both', **kwargs)
作用:网格线显示
参数说明:
b:bool or None
bool为False时,不显示网格线,否则显示网格线。
which:{'major','minor','both'}
要应用更改的网格线。
axis:{'both','x','y'}
**kwargs : Line2D properties