Error de Python-NameError: el nombre 'ax' no está definido-¿Cómo dibujar el objeto plt.text usando coordenadas relativas?

1. Fuentes de referencia

¿Cómo controlar la posición del texto en una imagen al agregar texto usando el método plt.text()? Ubicación del texto blog-CSDN blog_matplotlib de _FanG-3-

2. Antecedentes del problema

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

Como quiero agregar un texto definido por coordenadas relativas a la imagen, encontré el artículo en la fuente de referencia (el código es el anterior) y puedo resolverlo ajustando el parámetro de transformación en la función plt.text.

plt.text(0.5, 0.5, s="文本在这里", transform=ax.transAxes)

Así que también agregué este parámetro a mi código y lo configuré en ax.transAxes. Cuando lo ejecuté -> ocurrió un error.

A continuación se muestra mi código original:

#!/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()

Se informa un error [NameError: el nombre 'ax' no está definido].

¡Pero! Descubrí que el código fuente de referencia no definía ax, entonces, ¿por qué el mío salió mal?

Así que copié su código y lo ejecuté --> y ocurrió un error... Dios mío, resultó ser un ejemplo incorrecto.

Sin embargo, la idea de ajustar el parámetro de transformación no es ningún problema.

3. Solución

Después de una serie de búsquedas, encontré al experto a continuación, charlé con él un rato y lo entendí.

El dibujo de Python utiliza coordenadas normalizadas para determinar la posición del texto_Bubble Bobble's Village Blog-CSDN Blog_python posición del texto

Entonces agregué ax = plt.gca() a mi código, lo que significa asignar la subtrama actual a ax.

Aquí está el código modificado:

#!/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()

Ejecútelo nuevamente y será exitoso.

 

Supongo que te gusta

Origin blog.csdn.net/PSpiritV/article/details/123383989
Recomendado
Clasificación