极坐标图是一种二维坐标系,其中一个坐标是径向距离(通常称为半径或r),另一个坐标是角度(通常称为θ、phi或极角)。这种坐标系常用于表示物体在二维平面上的位置和方向,尤其是当涉及圆形、旋转或其他周期性运动时。
在极坐标图中,每个点由一个从原点(极点)到该点的线段表示,线段的长度代表半径r,线段与正x轴之间的夹角代表角度θ。这种表示方法在处理一些涉及旋转、周期现象或螺旋形状的问题时非常有用。
11.1默认坐标散点图
11.1.1图像呈现
11.1.2代码详情
import numpy as np # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt # 导入matplotlib的绘图模块,用于可视化
from matplotlib import rcParams# 从matplotlib中导入rcParams,它用于处理matplotlib的配置参数
# 定义一个字典config,其中包含字体、大小和其他相关的配置参数
config = {"font.family": 'serif',"font.size": 10.5,"mathtext.fontset": 'stix',"font.serif": ['SimSun']}
rcParams.update(config)# 使用config字典中的配置参数更新rcParams
plt.rcParams['axes.unicode_minus'] = False # 运行配置参数总的轴(axes)正常显示正负号(minus)
r = np.linspace(0, 2, 100)# 使用numpy的linspace函数生成从0到2的等差数列,包含100个点,赋值给r
theta = 2 * np.pi * r# 计算theta的值,这里theta与r成线性关系,可能不是典型的极坐标关系,但代码中是这么设定的
fig = plt.figure(figsize=(23, 10), dpi=100)# 创建一个新的图形窗口,设置其大小为23x10英寸,分辨率为100dpi
# 在当前的图形窗口上创建一个极坐标子图,并返回子图的引用,位置为1行2列的第1个位置
ax1 = plt.subplot(121,projection='polar') #开启极坐标
# 在极坐标子图ax1上绘制散点图,x轴为theta,y轴为r,设置标签为'Polar Projection',点的大小为10
ax1.scatter(theta, r, label='Polar Projection', s=10)#scatter开启散点图
# 在极坐标子图ax1上显示图例,并设置图例的位置
ax1.legend(bbox_to_anchor=(.85, 1.35))
# 在当前的图形窗口上创建一个直角坐标子图,并返回子图的引用,位置为1行2列的第2个位置
ax2 = plt.subplot(122)
# 在直角坐标子图ax2上绘制散点图,x轴为theta,y轴为r,设置标签为'Planar Projection',点的大小为10
# 注意这里的theta和r是极坐标的值,但在直角坐标系中显示可能不太直观
ax2.scatter(theta, r, label='Planar Projection', s=10)
# 在直角坐标子图ax2上显示图例,并设置图例的位置
ax2.legend(bbox_to_anchor=(0.85, 1.35))
# 设置直角坐标子图ax2的x轴标签为'R'
ax2.set_xlabel('R')
# 设置直角坐标子图ax2的y轴标签为θ,使用raw string来避免转义字符的问题
ax2.set_ylabel(r'$\theta')
ax1.set_title("极坐标1")# 设置图形的标题
ax2.set_title("极坐标2")# 设置图形的标题
plt.show()
11.1.3注意事项
在这段代码中,您创建了一个图形窗口,其中包含两个子图:一个极坐标子图和一个直角坐标子图。两个子图都使用了相同的theta
和r
数据来绘制散点图,但显示的方式和坐标系统不同。
11.2极坐标直线图
11.2.1图像呈现
11.2.2代码详情
import numpy as np # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt # 导入matplotlib的绘图模块,用于可视化
from matplotlib import rcParams # 从matplotlib中导入rcParams,它用于处理matplotlib的配置参数
# 定义一个字典config,其中包含字体、大小和其他相关的配置参数
config = {"font.family": 'serif', "font.size": 10.5, "mathtext.fontset": 'stix', "font.serif": ['SimSun']}
rcParams.update(config) # 使用config字典中的配置参数更新rcParams
plt.rcParams['axes.unicode_minus'] = False # 运行配置参数总的轴(axes)正常显示正负号(minus)
r = np.linspace(0, 2, 100)
theta = 2 * np.pi * r
fig = plt.figure(figsize=(18, 6), dpi=100)
ax1 = plt.subplot(121, projection='polar')
ax1.plot(theta, r, label='Polar Projection', ls='--', color='r') #plot开启直线图
ax1.legend(bbox_to_anchor=(.85, 1.35))
ax2 = plt.subplot(122)
ax2.plot(theta, r, label='Planar Projection')
ax2.legend(bbox_to_anchor=(.85, 1.35))
ax1.set_title("极坐标1")# 设置图形的标题
ax2.set_title("极坐标2")# 设置图形的标题
plt.show()
11.3极坐标条形图
11.3.1图像呈现
11.3.2代码详情
import numpy as np # 导入numpy库,用于处理数组和数值计算
import matplotlib.pyplot as plt # 导入matplotlib的绘图模块,用于可视化
from matplotlib import rcParams # 从matplotlib中导入rcParams,它用于处理matplotlib的配置参数
# 定义一个字典config,其中包含字体、大小和其他相关的配置参数
config = {"font.family": 'serif', "font.size": 10.5, "mathtext.fontset": 'stix', "font.serif": ['SimSun']}
rcParams.update(config) # 使用config字典中的配置参数更新rcParams
plt.rcParams['axes.unicode_minus'] = False # 运行配置参数总的轴(axes)正常显示正负号(minus)
# 设置numpy的随机数生成器的种子,使得每次生成的随机数序列相同,方便复现结果
np.random.seed(10130)
N = 20 # 设置将要生成的点的数量为20
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)# 生成从0到2π的等差数列,但不包括最后一个端点2π,作为极坐标中的角度theta
radii = 10 * np.random.rand(N)# 生成N个0到10之间的随机浮点数作为半径radii
width = np.random.rand(N) * .8 - .1# 生成N个-0.1到0.7之间的随机浮点数作为条形图的宽度width
colors = plt.cm.Spectral(radii / 10)# 根据半径radii生成颜色,这里使用matplotlib的Spectral颜色映射,将半径值映射到颜色上
plt.figure(figsize=(7, 7), dpi=120)# 创建一个新的图形窗口,并设置其大小为7x7英寸,分辨率为120dpi
ax = plt.subplot(111, projection='polar')# 在当前的图形窗口上创建一个极坐标子图,并返回子图的引用
ax.bar(theta, radii, width=width, bottom=0.0, color=colors,alpha=0.5) #bar开启条形图
plt.show()
11.3.3提示事项
- 导入必要的库,并设置matplotlib的配置参数。
- 生成随机角度、半径、条形宽度和颜色。
- 创建一个极坐标图,并在该图上绘制彩色条形图。
- 显示图形窗口。