В настоящее время я пишу программу, которая должна генерировать набор графиков. КАЖДЫЙ график должен иметь 3 концентрических круга, радиусы которых определяются набором данных. Кроме того, необходимо добавить еще один красный цвет круга, который может иметь другой центр. Однако я столкнулся с различными проблемами. Если радиус круга/s слишком велик, я должен увидеть 3 черных и 1 красный круг на графике, но я этого не сделаю.Странное поведение модуля Matplotlib Python - построение круга
Я выделил кусок кода, который делает сюжет и вот он -
import matplotlib.pyplot as plt
fig1 = plt.figure(1, figsize=(6,6))
plt.xlim(-30,30)
plt.ylim(-30,30)
rcircle1 = plt.Circle((0,0), 6.0, edgecolor="black", facecolor="white")
rcircle2 = plt.Circle((0,0), 12.0, edgecolor="black", facecolor="white")
rcircle3 = plt.Circle((0,0), 18.0, edgecolor="black", facecolor="white")
bcircle = plt.Circle((8.5,-5.8) ,2, edgecolor="red", facecolor="white")
ax = fig1.gca()
ax.add_artist(rcircle1)
ax.add_artist(rcircle2)
ax.add_artist(rcircle3)
ax.add_artist(bcircle)
fig1.savefig("Model.png", dpi=150)
Выход для выше -
Я пытался смотреть в различных класса переменных, связанных с Circle()
и add_artist()
, но не удалось найти что-то, что может повлиять на это поведение.
Моя текущая работа вокруг следующий код -
import numpy as np
import matplotlib.pyplot as plt
th = np.arange(-3.14,3.14,0.01)
fig1 = plt.figure(1,figsize=(6,6))
plt.xlim(-30,30)
plt.ylim(-30,30)
plt.plot(6*np.cos(th), 6*np.sin(th), color="black")
plt.plot(12*np.cos(th), 12*np.sin(th), color="black")
plt.plot(18*np.cos(th), 18*np.sin(th), color="black")
# (8,5, -5,8)
plt.plot(2*np.cos(th) + 8.5, 2*np.sin(th) - 5.8, color="red")
fig1.savefig("Hard.png", dpi=150)
Выход сгенерированных кода именно то, что я хочу быть!
Хотя это делает работу, он побеждает цель наличия Circle()
как методы в Matplotlib. Может кто-нибудь прокомментировать, почему первый код не работает, как я ожидаю?
Спасибо, Джо. Решение работало, просто не осознавало важность заказа. Я попытался ввести значение «альфа», но так или иначе это не сработало. Я думаю, что «альфа» не работает для этих типов объектов. Или, может быть, я что-то делал неправильно. Еще раз спасибо. – Killer
Что бы это ни стоило, 'alpha' должен работать нормально. Однако это относится как к заполнению, так и к контуру художника matplotlib, поэтому, если вы установите 'alpha = 0', ничего не будет нарисовано. Рад, что вы его работали, во всяком случае! –