为了正确显示中文字体
matplotlib.rcParams['font.family'] = 'SimHei'
matplotlib.rcParams['font.sans-serif'] = 'SimHei'
极坐标用弧度表示,引用np.pi 进行计算 也可以math.pi
linspace的endpoint参数用于规定是否包含末尾元素
labels = ['标签一', '标签二', '标签三', '标签四']
angles = np.linspace(0, 2 * np.pi, 4, endpoint=False)
dates = np.array([5, 4, 8, 9])
数组不可以像列表一样使用加号运算符拼接,对数组加号运算符操作是两个数组相加
使用numpy库的concatenate方法对两个数组进行连接,注意数组的拼接不同于列表,不能简单地使用运算符。拼接后以便于后续plot函数的绘制,使得首尾能够连接在一起,以此绘制完整
angles = np.concatenate((angles, [angles[0]]))
dates = np.concatenate((dates, [dates[0]]))
绘制标签,参数为将角度设置为theta网格的位置
plt.thetagrids(range(0, 360, int(360 / len(labels))), labels)
完整代码
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
matplotlib.rcParams['font.family'] = 'SimHei'
matplotlib.rcParams['font.sans-serif'] = 'SimHei' # 正确显示中文字体
labels = ['标签一', '标签二', '标签三', '标签四']
angles = np.linspace(0, 2 * np.pi, 4, endpoint=False)
dates = np.array([5, 4, 8, 9])
angles = np.concatenate((angles, [angles[0]]))
dates = np.concatenate((dates, [dates[0]]))
plt.subplot(111, polar=True) # 绘制极坐标
plt.plot(angles, dates)
plt.grid(True) # 网格开关
plt.thetagrids(range(0, 360, int(360 / len(labels))), labels)
plt.fill_between(angles, dates) # 填充
plt.show()
效果