Как определить пользовательскую ось в Matplotlib? - PullRequest
0 голосов
/ 13 июля 2020

Предположим, у меня есть следующий код:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(520)
y = np.random.rand(520)
plt.plot(x, y)

, который дает следующий график:

enter image description here

How can I define a custom axis so my X-axis looks like this:

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

1 Ответ

4 голосов
/ 13 июля 2020

Вы можете использовать:

  • plt.xscale('log'), чтобы изменить масштаб на логарифмический масштаб
  • set_major_formatter(ScalarFormatter()), чтобы вернуть нормальное форматирование ( заменив LogFormatter)
  • set_minor_locator(NullLocator()), чтобы удалить второстепенные отметки (которые также были установлены шкалой журнала)
  • set_major_locator(FixedLocator([...] или plt.xticks([...]), чтобы установить желаемые отметки на ось x
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter, NullLocator, FixedLocator
import numpy as np

x = np.arange(520)
y = np.random.uniform(-1, 1, 520).cumsum()
plt.plot(x, y)
plt.xscale('log')
# plt.xticks([...])
plt.gca().xaxis.set_major_locator(FixedLocator([2**i for i in range(0, 7)] + [130, 260, 510]))
plt.gca().xaxis.set_major_formatter(ScalarFormatter())
plt.gca().xaxis.set_minor_locator(NullLocator())
plt.show()

пример сюжета

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