Maison  >  Article  >  développement back-end  >  Comment ajouter des étiquettes aux images Matplotlib en Python

Comment ajouter des étiquettes aux images Matplotlib en Python

王林
王林avant
2023-05-12 12:52:064414parcourir

1. Ajouter une étiquette de texte plt.text()

est utilisé pour ajouter du texte à la position de coordonnées spécifiée sur l'image pendant le processus de dessin. Ce qui doit être utilisé, c'est la méthode plt.text().

Il a trois paramètres principaux :

plt.text(x, y, s)

où x et y représentent les coordonnées des axes x et y du point entrant. s représente une chaîne.

Il est à noter que si les coordonnées ici sont définies avec les étiquettes xticks et yticks, elles ne font pas référence aux étiquettes, mais aux valeurs originales des x et des axes lors du dessin.

Parce qu'il y a trop de paramètres, je ne les expliquerai pas un par un. Apprenez leur utilisation en fonction du code.

ha = 'center’ signifie que l'alignement vertical est centré, fontsize = 30 signifie que la taille de la police est de 30, rotation = -25 signifie la rotation. l'angle est de -25 degrés. c définit la couleur et alpha définit la transparence. va représente l'alignement horizontal. ha = 'center’表示垂直对齐方式居中,fontsize = 30表示字体大小为30,rotation = -25表示旋转的角度为-25度。c 设定颜色,alpha设定透明度。va表示水平对齐方式。

1. 示例

代码在图像中添加了两段文本,一段是“旅途中的宽~”的斜体水印,透明度为0.4。

另一段是在折线的每个折点附近标出当天收盘价。

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = range(9)
y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31]
c = 0.5 * (min(x) + max(x))
d = min(y) + 0.3 * (max(y) - min(y))
# 水印效果
plt.text(c, d, '旅途中的宽~', ha = 'center', fontsize = 30, rotation = -25, c = 'gray', alpha = 0.4)
plt.plot(x, y, label = '股票A收盘价', c = 'r', ls = '-.', marker = 'D', lw = 2)
plt.xticks(x, [
	'2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30',
	'2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05',
	'2022-04-06'], rotation = 45)
plt.title('某股票收盘价时序图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True)
plt.legend()
# 标出每天的收盘价
for a, b in zip(x, y):
	plt.text(a, b + 0.01, '%.2f' % b, ha = 'center', va = 'bottom', fontsize = 14)
plt.show()

Comment ajouter des étiquettes aux images Matplotlib en Python

二、添加注释 plt.annotate()

在上例代码的基础之上,添加注释。注释即对图像中某一位置的解释,可以用箭头来指向。

添加注释使用的是plt.annotate()方法

其语法中的常用参数如下

plt.annotate(str,xy,xytext,xycoords,arrowcoords)

其中str即注释要使用的字符串,即注释文本;xy指被注释的坐标点;xytext指注释文本要写在的位置;xycoords是被注释的点的坐标系属性,即以什么样的方式描述该点的坐标。设置值默为"data",即用(x,y)坐标来描述。其他可以选择的设置值如下,其中figure指的是整个画布作为一个参考系。而axes则表示仅对于其中的一个axes对象区域。

Comment ajouter des étiquettes aux images Matplotlib en Python

arrowprops

1. Exemple

Le code ajoute deux morceaux de texte à l'image, l'un est le filigrane italique de "Wide on the Journey~" avec une transparence de 0,4.

Comment ajouter des étiquettes aux images Matplotlib en PythonL'autre section consiste à marquer le cours de clôture du jour près de chaque sommet de la polyligne.

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = range(9)
y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31]
c = 0.5 * (min(x) + max(x))
d = min(y) + 0.3 * (max(y) - min(y))
# 仿水印效果
plt.text(c, d, '旅途中的宽', ha = 'center', fontsize = 30, rotation = -25, c = 'gray', alpha = 0.4)
plt.plot(x, y, label = '股票A收盘价', c = 'r', ls = '-.', marker = 'D', lw = 2)
# plt.plot([5.09, 5.13, 5.16, 5.12, 5.09, 5.25, 5.16, 5.20, 5.25], label='股票B收盘价', c='g', ls=':', marker='H', lw=4)
plt.xticks(x, [
    '2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30',
    '2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05',
    '2022-04-06'], rotation = 45)
plt.title('某股票收盘价时序图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True)
plt.legend()
# 标出每天的收盘价
for a, b in zip(x, y):
    plt.text(a, b + 0.01, '%.3f'% b, ha = 'center', va = 'bottom', fontsize = 9)
# 添加注释
plt.annotate('最低价', (x[y.index(min(y))], min(y)), (x[y.index(min(y))] + 0.5, min(y)), xycoords = 'data',
             arrowprops = dict(facecolor = 'r', shrink = 0.1), c = 'r',fontsize = 15)
plt.show()

Comment ajouter des étiquettes aux images Matplotlib en Python

2 . Ajouter un commentaire plt.annotate()

Ajoutez des commentaires basés sur l'exemple de code ci-dessus. Une annotation est une explication d'un certain emplacement dans l'image, qui peut être indiqué avec une flèche.

Pour ajouter des annotations, utilisez la méthode plt.annotate()

Les paramètres communs dans sa syntaxe sont les suivantsComment ajouter des étiquettes aux images Matplotlib en Python

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = range(9)
y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31]
c = 0.5 * (min(x) + max(x))
d = min(y) + 0.3 * (max(y)-min(y))
plt.plot(x, y, label = '股票A收盘价', c = 'k', ls = '-.', marker = 'D', lw = 2)
plt.xticks(x, [
    '2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30',
    '2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05',
    '2022-04-06'], rotation = 45)
plt.title('某股票收盘价时序图')
plt.xlabel('日期')
plt.ylabel('价格')
plt.grid(True)
plt.legend()
# 标出每天的收盘价
for a, b in zip(x, y):
    plt.text(a, b+0.01, '%.1f'%b, ha='center', va='bottom', fontsize=9)
plt.text(c, d, '旅途中的宽', ha = 'center', fontsize = 50, rotation = -25, c = 'r')
plt.annotate('最低价', (x[y.index(min(y))], min(y)), (x[y.index(min(y))] + 2, min(y)), xycoords = 'data',
             arrowprops = dict(width = 3, headwidth = 10, headlength = 20, facecolor = 'g', shrink = 0.05), c = 'r',fontsize = 20)
plt.show()

str est la chaîne à utiliser pour l'annotation, c'est-à-dire le texte d'annotation ; xy fait référence au point de coordonnées annoté ; xytext fait référence à la position où le texte d'annotation doit être écrit ; est la coordonnée du point annoté. Attributs du système, c'est-à-dire comment décrire les coordonnées du point. La valeur du paramètre est par défaut "data", qui est décrite par les coordonnées (x, y). Les autres valeurs de paramètres facultatives sont les suivantes, où la figure fait référence à l'ensemble du canevas comme système de référence. Et les axes signifient uniquement pour l'une des zones d'objet des axes.

Comment ajouter des étiquettes aux images Matplotlib en Python

Comment ajouter des étiquettes aux images Matplotlib en Pythonarrowprops est un dictionnaire utilisé pour définir les attributs de la flèche. Les paramètres écrits en dehors de ce dictionnaire représentent les attributs du texte d'annotation.

🎜Les valeurs pouvant être définies dans le dictionnaire sont : 🎜🎜🎜🎜🎜 Explication complémentaire de ces paramètres : La longueur totale de la flèche est d'abord déterminée par les coordonnées de position du point annoté et les coordonnées de position de l'annotation texte, qui peut être ajusté en ajustant le paramètre arrowprops Shrink Key pour ajuster davantage la longueur de la flèche. Le rétrécissement représente le pourcentage de la longueur raccourcie de la flèche par rapport à la longueur totale (la longueur déterminée par les coordonnées de position du point annoté et). les coordonnées de position du texte d'annotation). Lorsque la réduction n'est pas définie, la valeur par défaut est 0, c'est-à-dire pas de raccourcissement. Lorsque le retrait est très important, proche de 1, son effet équivaut à l’absence de raccourcissement. 🎜🎜1. Exemple🎜🎜Prenons comme exemple le marquage du prix le plus bas sur le graphique. Ajoutez une flèche rouge et les mots « prix le plus bas » à la position cible. 🎜🎜D'autres paramètres, tels que la définition de la police du texte d'annotation, c ou color représente la couleur et fontsize représente la taille de la police. Apprenez-en davantage sur les propriétés et essayez-les vous-même. 🎜rrreee🎜🎜🎜🎜Ce qui suit est un effet différent. La largeur de la flèche d'annotation ajoutée est de 3, la largeur de la tête de la flèche est de 10, la longueur est de 20, raccourcie de 0,05, et la flèche est verte et la police d'annotation. est rouge. L'exemple de code est le suivant : 🎜rrreee🎜🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer