次要x刻度线以下,主要是上方

时间:2019-04-17 09:39:32

标签: python matplotlib

是否可以使X轴的次刻度线位于Axes之下,而主刻度线则位于上方?

使用以下代码,我可以在同一侧绘制次要和主要报价,但我想将05报价设置在图表上方,而次要报价则留在下面。

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")

此代码产生以下图片:

enter image description here

我知道Axes.tick_params,我希望在那里找到这样的选择,但没有找到任何选择。 我也知道Axes.tick_topAxes.tick_bottom,但是它们将次要和主要刻度线都移到了同一侧。

我想避免使用Axes.twinx的任何技巧,因为它将添加一个新的Axes对象,这会使绘图更重。

1 个答案:

答案 0 :(得分:2)

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")