gpt4 book ai didi

python - 如何在 matplotlib 中绘制实心圆弧

转载 作者:太空狗 更新时间:2023-10-30 00:25:05 25 4
gpt4 key购买 nike

在 matplotlib 中,我想画一个实心圆弧,如下所示:

Filled Arc Example

以下代码生成未填充的弧线:

import matplotlib.patches as mpatches
import matplotlib.pyplot as plt

fg, ax = plt.subplots(1, 1)

pac = mpatches.Arc([0, -2.5], 5, 5, angle=0, theta1=45, theta2=135)
ax.add_patch(pac)

ax.axis([-2, 2, -2, 2])
ax.set_aspect("equal")
fg.canvas.draw()

documentation说填充弧是不可能的。最好的绘制方法是什么?

最佳答案

@jeanrjc's solution几乎可以让你到达那里,但它添加了一个完全不必要的白色三角形,它也会隐藏其他对象(见下图,版本 1)。

这是一种更简单的方法,它只添加弧的多边形:

基本上,我们沿着圆的边缘(从 theta1theta2)创建了一系列点(points)。这已经足够了,因为我们可以在 Polygon 构造函数中设置 close 标志,这将添加从最后一个点到第一个点的线(创建闭合弧)。

import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import numpy as np

def arc_patch(center, radius, theta1, theta2, ax=None, resolution=50, **kwargs):
# make sure ax is not empty
if ax is None:
ax = plt.gca()
# generate the points
theta = np.linspace(np.radians(theta1), np.radians(theta2), resolution)
points = np.vstack((radius*np.cos(theta) + center[0],
radius*np.sin(theta) + center[1]))
# build the polygon and add it to the axes
poly = mpatches.Polygon(points.T, closed=True, **kwargs)
ax.add_patch(poly)
return poly

然后我们应用它:

fig, ax = plt.subplots(1,2)

# @jeanrjc solution, which might hide other objects in your plot
ax[0].plot([-1,1],[1,-1], 'r', zorder = -10)
filled_arc((0.,0.3), 1, 90, 180, ax[0], 'blue')
ax[0].set_title('version 1')

# simpler approach, which really is just the arc
ax[1].plot([-1,1],[1,-1], 'r', zorder = -10)
arc_patch((0.,0.3), 1, 90, 180, ax=ax[1], fill=True, color='blue')
ax[1].set_title('version 2')

# axis settings
for a in ax:
a.set_aspect('equal')
a.set_xlim(-1.5, 1.5)
a.set_ylim(-1.5, 1.5)

plt.show()

结果(版本 2):

enter image description here

关于python - 如何在 matplotlib 中绘制实心圆弧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30642391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com