Saya memiliki grafik di mana saya telah mengisi area tertentu. Saya ingin menambahkan anotasi/label ke area yang diisi tetapi tidak tahu caranya. Silakan temukan kode saya di bawah ini:

import numpy as np
import matplotlib.pyplot as plt

X = np.linspace(0, 2 * np.pi, 100)
Ya = np.sin(X)
plt.plot(X, Ya)
plt.fill_between(X, Ya, 0,
                 where = (X >=3.00) & (Ya<= 0),
                 color = 'b',alpha=.1)

graph example

Saya ingin menambahkan anotasi ke bagian yang diisi biru. Bantuan apa pun akan sangat dihargai!

1
Fiach ONeill 11 Mei 2021, 16:53

1 menjawab

Jawaban Terbaik

Anda dapat mengambil output dari fill_between, mendapatkan kotak pembatasnya dan menggunakan pusatnya untuk memposisikan teks:


import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
X = np.linspace(0, 2 * np.pi, 100)
Ya = np.sin(X)
ax.plot(X, Ya)
filled_poly = ax.fill_between(X, Ya, 0,
                              where=(X >= 3.00) & (Ya <= 0),
                              color='b', alpha=.1)
(x0, y0), (x1, y1) = filled_poly.get_paths()[0].get_extents().get_points()

ax.text((x0 + x1) / 2, (y0 + y1) / 2, "Filled\npolygon", ha='center', va='center', fontsize=16, color='crimson')
plt.show()

using the center of the bounding box to position text

3
JohanC 11 Mei 2021, 14:48