matplotlib:填充极坐标图中两条曲线之间的圆形扇区

问题描述 投票:0回答:2

所以我有两条曲线

theta1(r)
theta2(r)
,其中
r
在两个数字(本例中为 1 和 330)之间均匀分布。如何填充两条曲线之间的径向线段?

我已经考虑过采用this解决方案,但它似乎开箱即用没有用。提供的解决方案依赖于逆关系

r(theta)
,这将是不明确的,因此不适用于我的情况。

python matplotlib plot polar-coordinates
2个回答
1
投票

一种选择是制作圆形扇区的

Polygon

import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
import numpy as np


fig, ax = plt.subplots(subplot_kw=dict(projection="polar"))

n = 330
r = np.arange(330)

# auto correlate random numbers (see comment below)
a = np.zeros(n) + np.add.accumulate(np.random.normal(0, np.pi / 180, size=n))
b = np.ones(n) * np.pi / 2 + np.add.accumulate(np.random.normal(0, np.pi / 180, size=n))

ax.plot(a, r)
ax.plot(b, r)

arc_theta = np.linspace(a[-1], b[-1], 101)
arc_r = np.ones_like(arc_theta) * 330

start = np.c_[a, r]
arc = np.c_[arc_theta, arc_r]
end = np.c_[b, r][::-1]

verts = np.concatenate([start, arc, end])

p = Polygon(verts, fc="purple", alpha=0.5)
ax.add_artist(p)

plt.show()

给予


-3
投票

bomboclat................................................ ...................................................... ...................................................... ...................................................... ................................................

© www.soinside.com 2019 - 2024. All rights reserved.