如何在Python(Matplotlib)中绘制二维圆锥?

3

我对Python比较新,正在制作一个房间的地图。我已经绘制了房间、障碍物等和一些点(即传感器)。现在我想制作一个2D锥形,显示传感器所能看到的区域。锥形将有一个角度和半径。

我尝试过搜索,但大多数都是关于3D锥形的讨论。

锥形应该长这样

欢迎任何指导。

2个回答

2
你可以使用 matplotlib.patches.Wedge,例如这个例子。另一个例子如下:
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from matplotlib.collections import PatchCollection
import numpy as np

fig, ax = plt.subplots()

patches = []

wedge = mpatches.Wedge((.5, .5), 0.5, 30, 270, ec="none")
patches.append(wedge)

colors = np.linspace(0, 1, len(patches))
collection = PatchCollection(patches, cmap=plt.cm.hsv, alpha=0.3)
collection.set_array(np.array(colors))
ax.add_collection(collection)

plt.show()

这会产生类似于以下图片的东西:

楔形图

显然,您需要调整theta1和theta2,以适应您试图表示的任何角度,并将原点移动到传感器所在的位置。此外,您可能希望将它们全部涂成相同的颜色,而不是彩虹色,但我会让您自行解决细节问题XD。

谢谢您指引我使用matplotlib.patches库。我使用了略微不同的方法,通过理解如何更改颜色、轮廓等方法来实现。 - Arslan Aslam
适合我的相关解决方案 https://dev59.com/cHPYa4cB1Zd3GeqPmbdO - arie64

1
最终使用了以下内容:
import matplotlib.pyplot as plt
from matplotlib.patches import Wedge

fig, ax = plt.subplots()
patches=[]
ax.axis('equal')
we = Wedge((2756.6747,5339751.8148),10,30,180,edgecolor='b',facecolor='none')
patches.append(we)

ax.add_artist(we)
ax.set(xlim=[2740, 2800], ylim=[5339740, 5339780])

plt.show()

感谢@reedinationer提供的指导。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接