Младший x тикает ниже, основной выше

#python #matplotlib

#python #matplotlib

Вопрос:

Возможно ли, чтобы младшие тики оси X были ниже Axes , а основные выше?

С помощью следующего кода я могу рисовать как второстепенные, так и основные тики на одной стороне, но я бы хотел, чтобы 0 5 тики и располагались над графиком, в то время как второстепенные тики оставались внизу.

 from matplotlib import figure as mpfig
from matplotlib.backends import backend_agg as mpback


fig = mpfig.Figure()
mpback.FigureCanvas(fig)
ax = fig.add_subplot(111)

x = list(range(10))
y = list(range(10))

ax.set_xticks(list(range(0, 11, 5)))
ax.set_xticks(list(range(0, 11, 1)), minor=True)

ax.plot(x, y)
fig.savefig("picture.png")
 

Этот код выдает следующую картину:

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

Я знаю Axes.tick_params , и я ожидал найти там такой вариант, но я не нашел ни одного. Я также знаю Axes.tick_top и Axes.tick_bottom , но они перемещают как второстепенные, так и основные тики в одну и ту же сторону.

Я бы хотел избежать каких-либо трюков Axes.twinx , поскольку это добавило бы новый Axes объект, который сделал бы рисунок более тяжелым.

Ответ №1:

Axes.tick_params должен быть в состоянии решить эту проблему.

 ax.tick_params(axis='x',which='minor',top=False,bottom=True)
ax.tick_params(axis='x',which='major',top=True,bottom=False)
 

При попытке это сработало для меня:

 from matplotlib import figure as mpfig
from matplotlib.backends import backend_agg as mpback


fig = mpfig.Figure()
mpback.FigureCanvas(fig)
ax = fig.add_subplot(111)

x = list(range(10))
y = list(range(10))

ax.tick_params(axis='x',which='minor',top=False,bottom=True)
ax.tick_params(axis='x',which='major',top=True,bottom=False)

ax.set_xticks(list(range(0, 11, 5)))
ax.set_xticks(list(range(0, 11, 1)), minor=True)

ax.plot(x, y)
fig.savefig("picture.png")
 

Комментарии:

1. О да, это определенно работает. Наверное, я не понял документ… Спасибо!

2. Не беспокойтесь! 🙂 .