当用.
fig, ax = plt.subplots()
x=[1,2,3,4,5,6,7,8,9,10]
y=[1,2,3,4,5,6,7,8,9,10]
ax.plot(x,y)
plt.show()
matplotlib将确定滴答的间距/位置和值。有办法提取这个自动的间距/位置和值吗?我想这样做,这样我就可以把它传递给
set_xticks()
对于我的第二轴(使用twiny()),然后使用带有自定义标签的set_ticklabels()。我意识到我可以使用二级轴,给出一个正反函数,但是提供一个逆函数对于我的代码的目标是不可行的。
因此,在下面的图像中,滴答只显示在2,4,6,8,10,而不是x的所有值,我想以某种方式提取这些值和位置,这样我就可以传递到set_xticks(),然后改变滴答标签(在第二个x轴上用twiny创建)。
更新
当使用修复时,建议它在x轴上工作得很好。然而,它对y轴不起作用。对于y轴,它似乎只接受y滴答的数据集值。我的代码是:
ax4 = ax.twinx()
ax4.yaxis.set_ticks_position('left')
ax4.yaxis.set_label_position('left')
ax4.spines["left"].set_position(("axes", -0.10))
ax4.set_ylabel(self.y_2ndary_label, fontweight = 'bold')
Y = ax.get_yticks()
ax4.yaxis.set_ticks(Y)
ax4.yaxis.set_ticklabels( Y*Y )
ax4.set_ylim(ax.get_ylim())
fig.set_size_inches(8, 8)
plt.show()
但这给了我下面的情节。后面的图是原来的Y轴。当我在x轴上这样做的时候,情况就不是这样了。有什么想法吗?
发布于 2022-10-29 21:54:49
# From "get_xticks" Doc: The locations are not clipped to the current axis limits
# and hence may contain locations that are not visible in the output.
current_x_ticks = ax.get_xticks()
current_x_limits = ax.get_xlim()
ax.set_yticks(current_x_ticks) # Use this before "set_ylim"
ax.set_ylim(current_x_limits)
plt.show()
https://stackoverflow.com/questions/74248121
复制相似问题