устанавливать тики с логарифмической шкалой

Кажется, что 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() 

итоговый график

Я собираюсь добавить несколько сюжетов и показать, как удалить минорные тики:

ОП:

 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 устанавливают тики, а не ticklabels. Если вы хотите добавить ярлыки

 ax1.set_xticklabels(["20", "200", "500"]) 

перед plt.show ()

  • Аннотировать точки данных при построении графика из Pandas DataFrame
  • размер маркера
  • строки matplotlib как метки по оси x
  • Как изменить фигурирование с использованием морского фактора
  • Fast Live Plotting в Matplotlib / PyPlot
  • Как поместить отдельные метки для участка рассеяния
  • Создание фигуры с точным размером и без дополнений (и легенда за пределами осей)
  • Tkinter, превышена максимальная глубина рекурсии
  • Matplotlib: изменение цвета оси
  • Установка разного цвета для каждой серии в поле рассеяния на matplotlib
  • Постройте плоскость на основе нормального вектора и точки в Matlab или matplotlib
  • Давайте будем гением компьютера.