这次新学一个函数图——极坐标。先来复习一下极坐标的基本概念~
极坐标是一种二维坐标系统,用距离和角度来确定平面上点的位置。
在极坐标系统中,平面上的任意一点P可以用一对有序实数来表示,其中:
r(径向坐标):表示点到极点(类似于直角坐标系的原点)的距离。r的取值范围通常是 ,但在某些情况下也可以取负值。当 时,点P 的位置是在与 相反方向上距离极点的位置。(角坐标):表示从极轴按逆时针方向旋转到连接极点和点P的射线所形成的角度(通常是水平向右的射线,类似于直角坐标系的x 轴正半轴)的取值范围通常是 或 。
复习完毕我们来看一下下图这个极坐标怎么画~
老规矩先看下源代码:
import matplotlib.pyplot as plt
import numpy as np
r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2]) # Less radial ticks
ax.set_rlabel_position(-22.5) # Move radial labels away from plotted line
ax.grid(True)
ax.set_title("A line plot on a polar axis", va='bottom')
plt.show()
尝试理解代码:
(1)
r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
这个应该就对应坐标点P。
r是距离,np.arange()我们在建筑兔零基础自学python记录7|学画阶梯图(step plot)-CSDN博客学过,复习后我们来解读一下r = np.arange(0, 2, 0.01)
r距离为x轴均匀间隔数值,从0到2(不包含2)间隔0.01
theta==
(2)极坐标创建方式
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
这里的fig, ax = plt.subplots() 我们是很熟悉的,之前都是这么写的。但括号里面的subplot_kw={'projection': 'polar'}从没见过。查询后:
subplot_kw:是一个字典,用于传递创建每个子图时的额外参数。
{'projection': 'polar'} 表示创建的子图使用极坐标投影。'polar' 表示极坐标
# 举例:创建一个图形,指定子图的背景颜色:浅灰色
fig, ax = plt.subplots(subplot_kw={'facecolor': 'lightgray'})
这里ax.plot(theta, r)极坐标的顺序是,角度在前,半径在后
(3)极坐标参数
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2])
ax.set_rlabel_position(-22.5)
ax.set_rmax(2):半径的最大值为 2,即只显示半径 2 的部分
ax.set_rticks([0.5, 1, 1.5, 2]):设置径向刻度,只显示 0.5、1、1.5 和 2 ax.set_rlabel_position(-22.5):将径向标签的位置旋转 -22.5 度,避免标签与绘制的曲线重叠。
补充1:我们尝试取消刻度限制,可见每一个R都标注了数值
补充2:这里我们可以尝试取消更改半径位置,会出现重叠现象
当然也可以把角度换为90°
(4)标题
ax.set_title("A line plot on a polar axis", va='bottom')
这里的va='bottom'之前没遇到,查阅后:va='bottom' 表示标题垂直对齐方式为底部对齐。va 取值还有 'center'(居中对齐)和 'top'(顶部对齐),主要是涉及标题和图的对齐方式。
这里的用法涉及ax.set_title()中**kwargs:可以接受其他用于设置文本属性的关键字参数。用的不多,了解一下。
ax.set_title(label, fontdict=None, loc='center', pad=None, **kwargs)
以下为整个代码解读:
import matplotlib.pyplot as plt
import numpy as np
#r为从0到2(不包含2)间隔0.01的数,θ为2πr
r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
#绘制极坐标图
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
#设定半径≤2,半径刻度[0.5, 1, 1.5, 2],半径刻度位置旋转-22.5°
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2])
ax.set_rlabel_position(-22.5)
ax.grid(True)
#设标题"A line plot on a polar axis",底部对齐
ax.set_title("A line plot on a polar axis", va='bottom')
plt.show()
总结:
极坐标创建方式:
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'}) ax.plot(theta, r)
极坐标参数:
ax.set_rmax(2) 半径最大值 ax.set_rticks([0.5, 1, 1.5, 2]) 半径刻度 ax.set_rlabel_position(-22.5) 半径刻度位置
标题和图的对齐方式
va='bottom' 底部对齐。va 取值还有 'center'(居中对齐)和 'top'(顶部对齐)。