digunakan untuk menambah teks pada kedudukan koordinat yang ditentukan pada imej semasa proses lukisan. Apa yang perlu digunakan ialah kaedah plt.text().
Ia mempunyai tiga parameter utama:
plt.text(x, y, s)
di mana x dan y mewakili koordinat paksi x dan y bagi titik masuk. s mewakili rentetan.
Perlu diingatkan bahawa koordinat di sini, jika label xticks dan yticks ditetapkan, jangan merujuk kepada label, tetapi nilai asal x dan paksi semasa melukis.
Oleh kerana terdapat terlalu banyak parameter, saya tidak akan menerangkannya satu per satu. Ketahui penggunaannya berdasarkan kod.
ha = 'center’
bermaksud penjajaran menegak adalah berpusat, fontsize = 30
bermaksud saiz fon ialah 30 dan rotation = -25
bermaksud sudut putaran ialah -25 darjah. c
Tetapkan warna, alpha
Tetapkan ketelusan. va
menunjukkan penjajaran mendatar.
1. Contoh
Kod menambah dua perenggan teks pada imej, satu ialah tera air condong bagi "Wide on the Journey~" dengan ketelusan 0.4.
Bahagian lain adalah untuk menandakan harga penutupan hari itu berhampiran setiap bucu garis poli.
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()
Berdasarkan kod contoh di atas, tambah ulasan. Anotasi ialah penjelasan lokasi tertentu dalam imej, yang boleh ditunjuk dengan anak panah.
Tambah ulasan menggunakan plt.annotate()
kaedah
Parameter biasa dalam sintaksnya adalah seperti berikut
plt.annotate(str,xy,xytext,xycoords,arrowcoords)
di mana str
ialah rentetan yang akan digunakan dalam ulasan, iaitu, teks ulasan ; xy
merujuk kepada titik koordinat beranotasi; untuk menerangkan koordinat titik. Nilai tetapan lalai kepada "data", yang diterangkan oleh koordinat (x, y). Nilai tetapan pilihan lain adalah seperti berikut, di mana angka merujuk kepada keseluruhan kanvas sebagai sistem rujukan. Dan kapak bermakna hanya untuk salah satu kawasan objek paksi. xytext
xycoords
arrowprops
Nilai yang boleh ditetapkan dalam kamus ialah:
Penjelasan lanjut tentang parameter ini: Jumlah panjang anak panah pertama kali ditentukan oleh koordinat kedudukan titik beranotasi dan anotasi Panjang anak panah ditentukan oleh koordinat kedudukan teks Anda boleh melaraskan lagi panjang anak panah dengan melaraskan kekunci pengecutan dalam parameter anak panah mewakili peratusan panjang yang dipendekkan daripada anak panah kepada jumlah panjang (panjang ditentukan oleh koordinat kedudukan titik beranotasi dan koordinat kedudukan teks anotasi ). Apabila pengecutan tidak ditetapkan, pengecutan lalai kepada 0, iaitu, tiada pemendekan. Apabila pengecutan adalah sangat besar, hampir kepada 1, kesannya adalah bersamaan dengan tiada pemendekan.
1. Contoh
Ambil tanda titik harga terendah pada carta sebagai contoh. Tambahkan anak panah merah dan perkataan "harga terendah" pada kedudukan sasaran.
Parameter lain, seperti menetapkan fon teks anotasi, c atau warna mewakili warna dan saiz fon mewakili saiz fon. Ketahui lebih lanjut tentang hartanah dan cuba sendiri.
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()
Berikut ialah kesan berbeza lebar anak panah anotasi ialah 3, lebar kepala anak panah ialah 10, panjang ialah 20, dipendekkan sebanyak 0.05, dan anak panah berwarna hijau, fon anotasi berwarna merah. Contoh kod adalah seperti berikut:
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()
Atas ialah kandungan terperinci Bagaimana untuk menambah label pada imej Matplotlib dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!