如何在python中的圆上绘制星星?

时间:2019-12-20 16:14:43

标签: python matplotlib

我正在尝试让星星叠加在一个圆圈上 我成功地画了一个圆圈:

 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 个答案:

答案 0 :(得分:2)

需要

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