Каким-то образом интерфейс pandas для matplotlib, похоже, портит вызов get_legend_handles_labels
. Приведенный ниже код эквивалентен тому, что вы написали, но вместо этого использует интерфейс matplotlib.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(index=['A','B','C','D'], columns=['Values'])
df['Values'] = [0.45, 0.28, 0.21, 0.3]
fig, ax = plt.subplots()
ax.pie(df["Values"].dropna(),
colors=['#002c4b', '#392e2c', '#92847a', '#ccc2bb', '#6b879d'],
autopct='%1.0f%%',
startangle=220,
labels=df.index,)
ax.legend(loc="best")
# get handles and labels for reuse
label_params = ax.get_legend_handles_labels()
figl, axl = plt.subplots()
axl.axis(False)
axl.legend(*label_params, loc="center", bbox_to_anchor=(0.5, 0.5), prop={"size":50})
figl.savefig("LABEL_ONLY.png")
Возможно, вам придется поиграться с figaspect
и prop
, чтобы получить оптимальные результаты для размера метки и позиционирование.