Я хочу отметить конкретную позицию оси X цветной звездочкой, нарисованной сверху оси X.
Я использую метку x-tick в качестве маркера (потому что я не мог понять, возможно ли разместить маркеры где-нибудь в координатах рис.), Чтобы он был выровнен правильно, но нарисован ниже оси x, поэтому он частично покрыт.
MWE:
import numpy as np
import matplotlib.pyplot as plt
fig,ax=plt.subplots(1,1)
ax.scatter([-1,1],[1,1])
ax.set_xticks([0],minor=True)
ax.set_xticklabels(['*'],minor=True,color='r',fontsize=20,verticalalignment='center')
plt.setp(ax.spines.values(), linewidth=3)
plt.show()
Вот как это выглядит прямо сейчас:
То, что вы ищете, это параметр zorder
. Используя zorder = 0
, вы в основном определяете порядок наложения последовательности графика. 0
отправит ось/рамку в фоновом режиме, поместив звездочку над линией оси по желанию. Я увеличил размер звездочки, чтобы выделить его.
ax.scatter([-1,1],[1,1])
ax.set_xticks([0],minor=True)
ax.set_xticklabels(['*'],minor=True,color='r',fontsize=30,verticalalignment='center')
plt.setp(ax.spines.values(), linewidth=3, zorder=0)
В качестве альтернативы, вы также можете указать zorder
для обеих команд построения, но используйте более высокий zorder
для звездочки.
ax.set_xticklabels(['*'],minor=True,color='r',fontsize=30,verticalalignment='center', zorder=2)
plt.setp(ax.spines.values(), linewidth=3, zorder=1)
Вы можете указать координаты рассеяния в смешанной системе (координаты данных для оси y и координаты оси для оси x).
Чтобы маркер рассеяния находился над шипами, установите для свойства zorder
разброса значение выше 2,5.
import matplotlib.pyplot as plt
fig,ax=plt.subplots(1,1)
ax.scatter([-1,1],[1,1])
ax.scatter(0,0, s=100, marker="*", color="red",
transform=ax.get_xaxis_transform(), clip_on=False, zorder=3)
plt.show()