Как построить 2-D конус в python (matplotlib)? - PullRequest
3 голосов
/ 15 мая 2019

Я значительно новичок в python и создаю карту комнаты. Я нанес на карту комнату, препятствия и т. Д. И некоторые точки (которые являются датчиками). Теперь я хочу сделать двухмерный конус, который показывает область, в которой видны датчики. У меня будет угол и радиус для конуса. Я пробовал искать, но в основном вопросы о трехмерных шишках обсуждались здесь в предыдущих вопросах. Как должен выглядеть конус

Любое руководство ценится

Ответы [ 2 ]

2 голосов
/ 15 мая 2019

Вы бы использовали 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()

, который производит что-то вроде:

Wedge plot

Очевидно,вам нужно будет настроить theta1 и theta2 от их 30 и 270, чтобы соответствовать любому углу, который вы пытаетесь представить, и переместить начало координат туда, где расположены датчики.Кроме того, вы можете захотеть покрасить их все равно вместо радуги, но я позволю вам разобраться в деталях. XD

1 голос
/ 20 мая 2019

Завершается, используя следующее:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...