Matplotlib добавление буквенных отметок

Есть ли способ добавить два тика (например, две буквы) вместе с существующими тиками (числами)? Я имею:

но хочу добавить две галочки (буквы "а" и "б"). Выполнение следующего кода удаляет цифры и оставляет только буквы, однако я хочу иметь оба.

ax.set_xticks((a, b))
ax.set_xticklabels(('$a$', '$b$'), size='xx-large')

Это результат

1 ответ

Это проще всего использовать annotate вместо того, чтобы ставить галочки.

Например, давайте начнем примерно с воспроизведения вашего примера графика:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(2.8, 11, 100)
y = 0.2 * np.exp(-0.05 * x**2) + 0.01

fig, ax = plt.subplots()

ax.fill_between(x, y, alpha=0.3, label='surface', lw=2,
                edgecolor='orange', facecolor='goldenrod')
ax.plot(x, y, color='darkred', lw=2, label='interpolated polinom')

ax.legend(fancybox=True, shadow=True)
ax.grid(ls=':')
ax.set_ylabel(r'$F[N]$', size=18)
ax.set_xlabel(r'$h[cm]$', size=18)
ax.spines['bottom'].set(linewidth=2)

plt.show()

введите описание изображения здесь

Мы могли бы добавить "суб тики", которые вы хотите с:

labelpad = ax.xaxis.labelpad + 15
for val, letter in [(2.8, 'a'), (11, 'b')]:
    ax.annotate('${}$'.format(letter), xy=(val, 0), xytext=(0, -labelpad),
                xycoords=('data', 'axes fraction'), textcoords='offset points',
                ha='center', va='top', size=18)

введите описание изображения здесь

Другие вопросы по тегам