python错误-NameError: name ‘ax‘ is not defined-如何采用相对坐标绘制plt.text对象?

一、参考来源

使用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()

再运行就成功了。

python错误-NameError: name ‘ax‘ is not defined-如何采用相对坐标绘制plt.text对象?_第1张图片

 

你可能感兴趣的:(Matplotlib,python,开发语言)