matplotlib - 在日志比例上,Matplotlib注释不工作?

  显示原文与译文双语对照的内容

我正在制作不同数据集的日志日志,并需要包括最佳拟合线方程。 我知道 plot 中应该放置方程,但是由于数据集有非常不同的值,我想在注释中使用相对坐标。 ( 否则,注释将针对每个数据集移动。)

我知道matplotlib的annotate() 函数,并且我知道我可以使用 textcoords='轴线分数'来启用相对坐标。 当我按常规比例 plot 数据时,它工作。 但是,我至少改变了其中一个比例来记录,注释消失了。 我没有错误消息。

这是我的代码:


plt.clf()
samplevalues = [100,1000,5000,10^4]
ax = plt.subplot(111)
ax.plot(samplevalues,samplevalues,'o',color='black')
ax.annotate('hi',(0.5,0.5), textcoords='axes fraction')
ax.set_xscale('log')
ax.set_yscale('log')
plt.show()

如果我注释出 ax.set_xcale('log')ax.set_ycale('log'),注释将显示在 plot ( 应该是) 中间。 否则,它就不会出现。

感谢你的帮助 !

时间: 作者:

就像注释中所指出的,它实际上可能是一个 Bug,但在轴坐标中使用是一个办法:


plt.clf()
samplevalues = [100,1000,5000,10^4]
ax = plt.subplot(111)
ax.loglog(samplevalues,samplevalues,'o',color='black')
ax.text(0.5, 0.5,'hi',transform=ax.transAxes)
plt.show()

另一种方法是使用 figtext(),但如果已经有几个图形( 面板),则使用更加繁琐。

顺便说一下,在上述代码中,我直接使用日志日志缩放来绘制数据。 即,而不是:


ax.plot(samplevalues,samplevalues,'o',color='black')
ax.set_xscale('log')
ax.set_yscale('log')

我做到了


ax.loglog(samplevalues,samplevalues,'o',color='black')

...