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)