使用plt.text()方法在添加文本时,如何控制文本在图像中的位置?_FanG-3-的博客-CSDN博客_matplotlib text位置
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 1)
y = x ** 2
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.plot(x, y)
plt.text(0.5, 0.5, s="文本在这里", transform=ax.transAxes)
plt.show()
————————————————
版权声明:本文为CSDN博主「FanG-3-」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_36766000/article/details/109532134
因为想要给图片加一个由相对坐标定义的文本,所以找了参考来源的那篇文章(代码如上),通过在plt.text函数中调整transform参数即可解决。
plt.text(0.5, 0.5, s="文本在这里", transform=ax.transAxes)
于是我也在我的代码中加了这个参数,并设置为 ax.transAxes,运行——>就出错了。
下面是我的原代码:
#!/usr/bin/python
# coding: utf-8
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 1)
layout = [False, True]
nbins = np.repeat([10], repeats=2)
for i, (n, lay) in enumerate(zip(nbins, layout)):
plt.subplot(1, 2, 1 + i)
plt.plot(x, x)
plt.text(0.0, 1.05, f'ytight={lay},ynbins={n}', fontsize=15, transform=ax.transAxes)
plt.locator_params("y", tight=lay, nbins=n)
plt.locator_params("x", nbins=5)
plt.show()
报错【NameError: name 'ax' is not defined】。
可是!我发现参考来源的代码也没有定义ax呀,那我的为啥出错了呢?
于是我拷贝他的代码,运行——>也出错了.......好家伙,原来是错误的示例。
但是,transform这个参数的调整,思路绝对是没问题的。
经过一连串的搜索,我找到了下面这位大牛,跟大牛畅谈片刻,心领神会。
Python 画图采用归一化坐标确定 text 位置_泡泡龙的村的博客-CSDN博客_python text位置
于是我就在自己的代码中加了 ax = plt.gca(),也就是将当前的subplot子图赋予给ax。
下面是更改后的代码:
#!/usr/bin/python
# coding: utf-8
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 1)
layout = [False, True]
nbins = np.repeat([10], repeats=2)
for i, (n, lay) in enumerate(zip(nbins, layout)):
plt.subplot(1, 2, 1 + i)
plt.plot(x, x)
ax = plt.gca()
plt.text(0.0, 1.05, f'ytight={lay},ynbins={n}', fontsize=15, transform=ax.transAxes)
plt.locator_params("y", tight=lay, nbins=n)
plt.locator_params("x", nbins=5)
plt.show()
再运行就成功了。