我正在尝试让星星叠加在一个圆圈上 我成功地画了一个圆圈:
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)
好的,我可以成功地创造星星。
但是当我将上面的内容叠加到圆圈上时,我无法查看星星。有什么帮助吗?谢谢
答案 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()