Python绘图-11极坐标图

极坐标图是一种二维坐标系,其中一个坐标是径向距离(通常称为半径或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注意事项

在这段代码中,您创建了一个图形窗口,其中包含两个子图:一个极坐标子图和一个直角坐标子图。两个子图都使用了相同的thetar数据来绘制散点图,但显示的方式和坐标系统不同。

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提示事项

  1. 导入必要的库,并设置matplotlib的配置参数。
  2. 生成随机角度、半径、条形宽度和颜色。
  3. 创建一个极坐标图,并在该图上绘制彩色条形图。
  4. 显示图形窗口。
  • 24
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Py小趴

整理不易,感谢金主!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值