Кажется, что set_xticks
не работает в шкале журнала:
from matplotlib import pyplot as plt
fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 200, 500])
plt.show()
Возможно ли это?
Кажется, что set_xticks
не работает в шкале журнала:
from matplotlib import pyplot as plt
fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 200, 500])
plt.show()
Возможно ли это?
import matplotlib
from matplotlib import pyplot as plt
fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 200, 500])
ax1.get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
или
ax1.get_xaxis().get_major_formatter().labelOnlyBase = False
plt.show()
Я собираюсь добавить несколько сюжетов и показать, как удалить минорные тики:
OP:
from matplotlib import pyplot as plt
fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 300, 500])
plt.show()
Чтобы добавить определенные тики, как указано tcaswell, вы можете использовать matplotlib.ticker.ScalarFormatter
:
from matplotlib import pyplot as plt
import matplotlib.ticker
fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 300, 500])
ax1.get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
plt.show()
Чтобы удалить минорные тики, вы можете использовать matplotlib.rcParams['xtick.minor.size']
:
from matplotlib import pyplot as plt
import matplotlib.ticker
matplotlib.rcParams['xtick.minor.size'] = 0
matplotlib.rcParams['xtick.minor.width'] = 0
fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 300, 500])
ax1.get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
plt.show()
Вместо этого вы можете использовать ax1.get_xaxis().set_tick_params
, он имеет тот же эффект (но только изменяет текущую ось, а не все будущие цифры в отличие от matplotlib.rcParams
):
from matplotlib import pyplot as plt
import matplotlib.ticker
fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 300, 500])
ax1.get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
ax1.get_xaxis().set_tick_params(which='minor', size=0)
ax1.get_xaxis().set_tick_params(which='minor', width=0)
plt.show()
set_xticks
работает, если присмотреться, он ставит основные тики на 20, 200, 500 (тики длиннее остальных). Сравните с тем же сюжетом без вызова set_xticks
.
Дело в том, что set_xticks
устанавливает тики, а не метки метки.
Если вы хотите, чтобы метки добавляли
ax1.set_xticklabels(["20", "200", "500"])
перед plt.show()