Я пытаюсь наложить звезды на круг. Я успешно нарисовал круг, используя это:

 import matplotlib.pyplot as plt
 %matplotlib inline
 circle = plt.Circle((0.0,0.0),radius=0.75, fc='r')
 fig, ax = plt.subplots()
 plt.gca().add_patch(circle)
 ax.axis('scaled')
 ax.scatter(x,y,s=320, marker='*')
 ax.axis('off');

Чтобы начать сначала, я сначала попробовал это:

 x = ax.get_xticks()
 s = 320
 y = np.zeros(len(x))
 plt.scatter(x,y, marker='*', s=s)

Хорошо, я могу успешно создавать звезды.

Но когда я комбинирую вышеперечисленное, чтобы наложить на круг, я не могу видеть звезды. Любая помощь? Благодарность

1
rajn 20 Дек 2019 в 19:14

1 ответ

zorder (является порядком z) необходим, чтобы сообщить matplotlib, что звезды должны быть ближе к зрителю, чем круг. С разными zorder вы можете создать несколько слоев друг над другом. По умолчанию zorder для круга и звездочек - 1, поэтому невозможно предсказать, какая из них будет видна. Для звезд в этом случае подойдет любое число минимум 2. Если на графике также есть линии, звезды должны быть как минимум zorder 3, чтобы быть сверху.

import matplotlib.pyplot as plt
import numpy as np
# % matplotlib inline

n = np.arange(45)
theta = n * (3 - np.sqrt(5)) * np.pi
r = 0.1 * np.sqrt(n)
x = r * np.cos(theta)
y = r * np.sin(theta)
circle = plt.Circle((0.0, 0.0), radius=0.75, fc='deepskyblue')
fig, ax = plt.subplots()
ax.add_patch(circle)
ax.axis('scaled')
ax.scatter(x, y, s=320, marker='*', color='gold', zorder=3)
ax.plot(x,y,color='tomato')
ax.axis('off')
plt.show()

example image

3
JohanC 23 Дек 2019 в 01:07