在平面内取一个定点O,叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向)。对于平面内任何一点M,用ρ表示线段OM的长度(有时也用r表示),θ表示从Ox到OM的角度,ρ叫做点M的极径,θ叫做点M的极角,有序数对 (ρ,θ)就叫点M的极坐标,这样建立的坐标系叫做极坐标系。通常情况下,M的极径坐标单位为1(长度单位),极角坐标单位为rad(或°)
polar 函数用于绘制极坐标图。polar 函数的调用格式如下:
polar(theta, r, **kwargs)
绘制一个简单的极坐标图,完整代码如下:
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()
上面代码的运行结果:
绘制一个极坐标图并标注点坐标,与第一个例子不同,为了分别给每个点标记坐标,需要循环在极坐标图上绘制数据点。完整代码如下:
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()
上面代码的运行结果:
matplotlib 的 pyplot 子库提供了绘制极坐标图的方法,在调用 subplot() 创建子图时通过设置 projection=‘polar’ 便可创建一个极坐标子图,然后调用 plot() 在极坐标子图中绘图。下面就创建一个极坐标子图和一个直角坐标子图进行对比。
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()
上面代码的运行结果: