Как задать произвольные значения по оси matplotlib

Возможно ли в matplotlib осуществить следующую штуку: по оси сделать возрастающе-убывающую последовательность, не используя метод xticklabels(). Нужно что-то подобное:введите сюда описание изображения


Ответы (1 шт):

Автор решения: MarianD

Да, возможно. Примените FixedFormatter() с последовательностью таких значений, какие вы хотите.

FixedFormatter() требует FixedLocator(), чтобы знать, куда рисовать ваши значения:

import matplotlib.pyplot as plt
from matplotlib.ticker import FixedLocator, FixedFormatter
import numpy as np

VALUES = 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1

# Пример функции - здесь будет ваша:
x = np.linspace(-2.4 * np.pi, +2 * np.pi, 200)
y = 5.4 * np.sinc(x) + x/3 + 4.1

ax = plt.axes()
ax.plot(x, y)

ax.xaxis.set_major_locator(FixedLocator(range(-8, 7)))
ax.xaxis.set_major_formatter(FixedFormatter(VALUES))

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

→ Ссылка