我一直在努力从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')
我可能遗漏了一些简单的东西,但我一直在阅读文档,玩代码,并查看其他帖子无济于事。
非常感谢任何帮助。
编辑:包括ax2.yaxis.set_major_locator(plt.NullLocator())
仍然没有摆脱左蜱。
答案 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