尽管调用了tick_params并使用了NullLocator,但左侧刻度标记仍保留在matplotlib中

时间:2016-02-17 21:16:49

标签: python python-3.x matplotlib

我一直在努力从matplotlib图中删除左刻度标记,该图有两个共享x轴的子图。

如果我从一个情节开始,事情就像我期望的那样:

X = np.linspace(0, 2 * np.pi, 100)
Y = np.sin(X)
Z = np.sin(2 * X)

fig, ax1 = plt.subplots()

ax1.set_ylim([-1.1, 1.1])

ax1.spines['top'].set_visible(False)
ax1.spines['left'].set_visible(False)
ax1.spines['right'].set_visible(False)

ax1.tick_params(axis='both',
                which='both',
                bottom='off',
                top='off',
                left='off',
                right='off')

ax1.plot(X, Y, color='b')

收率: No left ticks, all is well

如果我尝试使用.twinx()创建另一个共享相同y轴的图并使用我在ax1上使用的相同方法,则左边的刻度返回:

... continuing the block above...

ax2 = ax1.twinx()
ax2.spines['top'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax2.spines['right'].set_visible(False)

ax2.tick_params(axis='both',
                which='both',
                bottom='off',
                top='off',
                left='off',
                right='off')

ax2.plot(X, Z, color='r')

收率: The left ticks are back

我可能遗漏了一些简单的东西,但我一直在阅读文档,玩代码,并查看其他帖子无济于事。

非常感谢任何帮助。

编辑:包括ax2.yaxis.set_major_locator(plt.NullLocator())仍然没有摆脱左蜱。

3 个答案:

答案 0 :(得分:1)

您是否尝试过以下类似方法?

plt.xticks([])
plt.yticks([])

答案 1 :(得分:0)

您是否尝试过像这样定义图形和子图:

axes[1].set_yticklabels(axes[1].get_yticklabels(), visible=False)

并为第二个数字设置ytick标签时如下:

$result = $mysqli->query("SELECT...");
if ($result->num_rows) {
    while($row = $result->fetch_assoc()){
        $arr[$row['id']][] = $row['name'];
    }
}

当我同时绘制两个共享相同x和y标签的数字时,这对我有用。

答案 2 :(得分:0)

所以问题似乎与命令的排序有关。

如果我将.twinx()调用移到我格式化的上方,那么刻度线就会消失:

X = np.linspace(0, 2 * np.pi, 100)
Y = np.sin(X)
Z = np.sin(2 * X)

fig, ax1 = plt.subplots()
ax1.set_ylim([-1.1, 1.1])
ax2 = ax1.twinx() # <--------------- Move it here

ax1.spines['top'].set_visible(False)
ax1.spines['left'].set_visible(False)
ax1.spines['right'].set_visible(False)

ax1.tick_params(axis='both',
                which='both',
                bottom='off',
                top='off',
                left='off',
                right='off')

ax1.plot(X, Y, color='b')

ax2.spines['top'].set_visible(False)
ax2.spines['left'].set_visible(False)
ax2.spines['right'].set_visible(False)

ax2.tick_params(axis='both',
                which='both',
                bottom='off',
                top='off',
                left='off',
                right='off')

ax2.plot(X, Z, color='r')

产生我想要的东西: No left tick marks!

感谢您让我质疑我的策划方式,@ Reggicide