1. 极坐标
在平面内取一个定点O,叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向)。对于平面内任何一点M,用ρ表示线段OM的长度(有时也用r表示),θ表示从Ox到OM的角度,ρ叫做点M的极径,θ叫做点M的极角,有序数对 (ρ,θ)就叫点M的极坐标,这样建立的坐标系叫做极坐标系。通常情况下,M的极径坐标单位为1(长度单位),极角坐标单位为rad(或°)
2. polar 函数介绍
polar 函数用于绘制极坐标图。polar 函数的调用格式如下:
1 | polar(theta, r, **kwargs) |
参数说明:
- theta:标量或标量序列,数据点的极径,必须参数。
- r:标量或标量序列,数据点的极角,可选参数。如果不设置,则为长度为 len(theta) 默认序列替代 。
- kwargs:Line2D 属性,可选参数,kwargs 用于指定线标签(用于自动图例)、线宽、标记面颜色等特性。
2. polar 函数绘图示例
2.2 绘制一个简单的极坐标图
绘制一个简单的极坐标图,完整代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import matplotlib.pyplot as plt # step1:准备画图的数据 xs = [1, 2, 3, 4, 5, 6, 7] # step2:手动创建一个figure对象,相当于一个空白的画布 fig = plt.figure() # step3:在画布上添加1个子块,标定绘图位置 ax = fig.add_subplot(1, 1, 1, projection='polar') # step4: 绘制极坐标图 plt.polar(xs, 'ro') ax.set_title('A simple polar example') # 展示 plt.show() |
上面代码的运行结果:
2.2 绘制一个极坐标图并标注点坐标
绘制一个极坐标图并标注点坐标,与第一个例子不同,为了分别给每个点标记坐标,需要循环在极坐标图上绘制数据点。完整代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import matplotlib.pyplot as plt import numpy as np # step1:准备画图的数据 xs = np.arange(7) ys = xs ** 2 # step2:手动创建一个figure对象,相当于一个空白的画布 fig = plt.figure() # step3:在画布上添加1个子块,标定绘图位置 ax = fig.add_subplot(1, 1, 1, projection='polar') # step4:为了分别给每个点标记坐标,需要循环在极坐标图上绘制数据点 for x, y in zip(xs, ys): # 绘制极坐标图 plt.polar(x, y, 'ro') # 增加文本说明,即每个点的极坐标 plt.text(x, y, '%d, %d' % (int(x), int(y)), horizontalalignment='center', verticalalignment='bottom') ax.set_title('A simple polar example') # 展示 plt.show() |
上面代码的运行结果:
3. plot 函数绘制极坐标图
matplotlib 的 pyplot 子库提供了绘制极坐标图的方法,在调用 subplot() 创建子图时通过设置 projection=‘polar’ 便可创建一个极坐标子图,然后调用 plot() 在极坐标子图中绘图。下面就创建一个极坐标子图和一个直角坐标子图进行对比。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import matplotlib.pyplot as plt # step1:准备画图的数据 theta = [1, 2, 3, 4, 5, 6, 7] # step2:手动创建一个figure对象,相当于一个空白的画布 fig = plt.figure() # step3:在画布上添加2个子块,标定绘图位置 ax1 = fig.add_subplot(1, 2, 1, projection='polar') # 指定绘制极坐标图 ax2 = fig.add_subplot(1, 2, 2) # step4: 绘图 ax1.plot(theta, theta, '--') ax2.plot(theta, theta, '--') # 展示 plt.show() |
上面代码的运行结果: