1.先了解一下什么是极坐标
极点:以圆的中心作为极点O
,
极轴:以0°的方向引一条射线极轴Ox
,
极径:选定一个长度单位r
极角:以Ox
正方向开始计算角度θ
(通常取逆时针方向)
极坐标:以极点O
作为圆心,以极昼Ox
的方向作为起点,以极径r
作为半径,画一个以极角θ
的扇形,最终圆规脚定的位置就是极坐标M
2.利用matplotlib画出一个点
import matplotlib.pyplot as plt import numpy as np """ 20:以20作为半径 ylim(0,100):设置极轴的范围 lw=2:表示极坐标图案的宽度 ro:绘制的极坐标图形为红色圆点 """ plt.polar(0.25*np.pi,20,"ro",lw=2) plt.ylim(0,100) plt.show()
3.利用matplotlib画多个点并连成封闭图案
import matplotlib.pyplot as plt import numpy as np """ 绘制多个点,并且第一个点与最后一个点相同,使其成为闭合图案 """ theta = np.array([0.25,0.75,1,1.5,0.25]) r = [20,60,40,80,20] plt.polar(theta*np.pi,r,"r-",lw=2) plt.ylim(0,100) plt.show()
4.填充颜色
import matplotlib.pyplot as plt import numpy as np #使用ggplot的绘图风格 plt.style.use('ggplot') #构建角度与值 theta = np.array([0.25,0.75,1,1.5,0.25]) r = [20,60,40,80,20] plt.polar(theta*np.pi,r,"r-",lw=1) #设置填充颜色,并且透明度为0.75 plt.fill(theta*np.pi,r,'r',alpha=0.75) plt.ylim(0,100) #显示网格线 plt.grid(True) plt.show()
5.绘制多个数据的雷达图
import numpy as np import matplotlib.pyplot as plt # 中文和负号的正常显示 plt.rcParams['font.sans-serif'] = 'Microsoft YaHei' plt.rcParams['axes.unicode_minus'] = False #使用ggplot的风格绘图 plt.style.use('ggplot') #构造数据 values = [3.2,2.1,3.5,2.8,3,4] values_1 = [2.4,3.1,4.1,1.9,3.5,2.3] feature = ['个人能力','QC知识',"解决问题能力","服务质量意识","团队精神","IQ"] N = len(values) #设置雷达图的角度,用于平分切开一个平面 angles = np.linspace(0,2*np.pi,N,endpoint=False) #使雷达图封闭起来 values = np.concatenate((values,[values[0]])) angles = np.concatenate((angles,[angles[0]])) values_1 = np.concatenate((values_1,[values_1[0]])) #绘图 fig = plt.figure() #设置为极坐标格式 ax = fig.add_subplot(111, polar=True) #绘制折线图 ax.plot(angles,values,'o-',linewidth=2,label='活动前') ax.fill(angles,values,'r',alpha=0.5) #填充颜色 ax.plot(angles,values_1,'o-',linewidth=2,label='活动后') ax.fill(angles,values_1,'b',alpha=0.5) #添加每个特质的标签 ax.set_thetagrids(angles*180/np.pi,feature) #设置极轴范围 ax.set_ylim(0,5) #添加标题 plt.title('活动前后员工状态') #增加网格纸 ax.grid(True) plt.show()