#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. Не беспокойтесь! 🙂 .