Я пытаюсь построить большое количество кривых в стеке с помощью matplotlib, используя python. Чтобы прочитать график, мне нужно показать легенды, но если я покажу его с помощью метода legend
, мой график будет нечитаемым (из-за количества легенд и их размера).
I обнаружили, что mplcursors
может помочь мне сделать это с помощью всплывающего окна на самом графике. Он работает с "простыми" графиками, но не с stackplot
.
Вот предупреждающее сообщение со стековыми графиками:
/usr/lib/python3.7/site-packages/mplcursors/_pick_info.py:141: UserWarning: Pick support for PolyCollection is missing.
warnings.warn(f"Pick support for {type(artist).__name__} is missing.")
И вот код, связанный с этим ошибка (это всего лишь подтверждение концепции):
import matplotlib.pyplot as plt
import mplcursors
import numpy as np
data = np.outer(range(10), range(1, 5))
timestamp = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
tmp = list()
tmp.append(data[:, 0])
tmp.append(data[:, 1])
tmp.append(data[:, 2])
tmp.append(data[:, 3])
print(data)
print(tmp)
fig, ax = plt.subplots()
ax.stackplot(timestamp, tmp, labels=('curve1', 'line2', 'curvefever', 'whatever'))
ax.legend()
mplcursors.cursor()
cursor = mplcursors.cursor(hover=True)
@cursor.connect("add")
def on_add(sel):
print(sel)
label = sel.artist.get_label()
sel.annotation.set(text=label)
plt.show()
У вас есть идея, как это исправить, или вы знаете другой способ сделать что-то подобное?