Maison > Article > développement back-end > Comment ajouter des étiquettes aux images Matplotlib en Python
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()
在上例代码的基础之上,添加注释。注释即对图像中某一位置的解释,可以用箭头来指向。
添加注释使用的是plt.annotate()
方法
其语法中的常用参数如下
plt.annotate(str,xy,xytext,xycoords,arrowcoords)
其中str
即注释要使用的字符串,即注释文本;xy
指被注释的坐标点;xytext
指注释文本要写在的位置;xycoords
是被注释的点的坐标系属性,即以什么样的方式描述该点的坐标。设置值默为"data",即用(x,y)坐标来描述。其他可以选择的设置值如下,其中figure指的是整个画布作为一个参考系。而axes则表示仅对于其中的一个axes对象区域。
arrowprops
L'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()
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 suivants
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()où
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.
arrowprops
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.
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!