Можно ли нарисовать xticklabels поверх оси Xaxis? - PullRequest
0 голосов
/ 09 января 2019

Я хочу отметить определенную позицию оси 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()

Вот как это выглядит сейчас:

enter image description here

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Вы можете указать координаты рассеяния в смешанной системе (координаты данных для оси 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()

enter image description here

0 голосов
/ 09 января 2019

То, что вы ищете, это 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)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...