Matplotlib手冊
plt.text添加文本註釋
參考:https://www.jianshu.com/p/3f2cba11b771
例如繪製如下圖片:
生成這種帶字母的文本框真的讓我想半天,這提供一種思路,採用text文本註釋,但是沒有上述圖片那麼好看,讀者如果有更好的方法歡迎評論
plt.text(x, y , str , family=' ' , size= , color= ,style= , weight= , bbox=dict(facecolor= , alpha=0.2))
參數名 | 參數功能 |
---|---|
x,y |
設置文本的起始座標 |
str |
文本的字符串內容 |
family |
設置字體的樣式如宋體等 |
size |
設置大小 |
color |
設置顏色 |
style |
設置樣式如傾斜 |
weight |
設置粗體等款細 |
bbox |
設置文本的邊框,在dict()中設置參數 |
facecolor設置邊框顏色,alpha設置透明度 |
具體參考手冊:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.text.html#matplotlib.pyplot.text
參考代碼如下:
# -*- coding: UTF-8 -*-
import numpy as np
import matplotlib.pyplot as plt
N = 7 # 點的個數
x = [0.1,0.2,0.3,0.4,0.5,0.6,0.7]
y = [0.1,0.2,0.3,0.4,0.5,0.6,0.7]
n1 = ['A','B','C','D','E','F','G']
n = np.arange(7)
colors = np.random.rand(N) # 隨機產生50個0~1之間的顏色值
area = np.pi * (15 * np.array([0.5]*7))**2
for i in range(7):
plt.text(x[i],y[i], n1[i], size = 8,\
family = "fantasy", color = "black", style = "italic", weight = "light",\
bbox = dict(boxstyle="square",facecolor = "w", alpha = 1))
plt.show()
結果如下:
plt一圖多曲線繪製,添加圖例
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
# 數據老子瞎編的
N = 6
x = [12,85,85,28,182,172]
y = [25.1,28.0,29.9,28.8,33.2,36.2]
n1 = ['A','B','C','D','E','F']
# 數據老子瞎編的
plt.xlim((0,200))
plt.ylim((22,40))
for i in range(6):
plt.text(x[i],y[i], n1[i], size = 10,\
family = "fantasy", color = "black", style = "normal", weight = "black",\
bbox = dict(boxstyle="square",facecolor = "w", alpha = 1))
plt.plot([22,29,51],[28.2,31.0,33],'gv',linestyle='-',label='YOLOv3')
plt.plot([64,72,98,121,153],[30.5,32.5,34.3,35.1,35.7],'bo',linestyle='-',label='RetinaNet-50')
plt.plot([35,50,65,80,125,160],[22.7,23.5,26,28.9,32.7,34.7],'c+',linestyle='-',label='Faster-RCNN')
plt.plot([15,30,45],[29.7,33.5,36,],'r*',linestyle='-',label='FuckNet')
# plt.legend(loc='upper left')
plt.legend()
plt.xlabel('inference time (ms)')
plt.ylabel('COCO AP')
ax = plt.gca()
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.savefig('fig1.pdf',bbox_inches = 'tight')
plt.show()
至於圖裏面插入表格的操作,我是真的不會,還沒搞定