Пользовательские метки xticks на графике loglog

Простой пример выглядит следующим образом:

import numpy as np
import numpy.random as npr
import matplotlib.pyplot as plt
N = 1000
x = np.linspace(1, 5, N)
y = npr.randint(1e16, size = N) / 1e16
y = np.sort(y)

fig, ax = plt.subplots()
ax.loglog(x, y, '.')
ax.grid(True, 'both')

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

Где я хочу заменить xticks. Пока все, что я пробовал, не сработало:

ax.set_xticks([2, 3, 4], ['a', 'b', 'c'])
ax.xaxis.set_ticks_position('none') 
ax.set_xticks([])

Ничего из вышеперечисленного не дало никакого эффекта. Моя цель — заменить тики пользовательскими тиками (строками или целыми числами). Таким образом, вместо 2 x 10⁰ должно быть только 2. Аналогично для других xticks.


person skrat    schedule 07.08.2019    source источник


Ответы (1)


Вероятно, это то, что вам нужно:

import numpy as np
import matplotlib.pyplot as plt
N = 1000
x = np.linspace(1, 5, N)
y = np.random.rand(N)
y = np.sort(y)

fig, ax = plt.subplots()
ax.loglog(x, y, '.')
ax.grid(True, 'both')

ax.set_xticks([2, 3, 4])
ax.set_xticklabels(['a', 'b', 'c'])
ax.minorticks_off()

plt.show()

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

person ImportanceOfBeingErnest    schedule 07.08.2019
comment
Да, это так! - person skrat; 07.08.2019