Поскольку мой комментарий не был достаточно четким, я копирую ответ здесь.
Просто используйте этот пост . Приведенный ниже код также изменяет цвет фона, так что белый текст легенды виден:
import matplotlib.pyplot as plt
from matplotlib import font_manager
import numpy as np
for a in [100, 300, 500]:
plt.scatter([], [], c='lawngreen', alpha=0.8, s=a, label=str(a) + ' km²')
plt.grid(True)
plt.gca().set_facecolor('skyblue')
leg = plt.legend(scatterpoints=1, frameon=False,labelspacing=1, loc='lower left')
plt.setp(leg.get_texts(), color='white')
plt.show()
![example plot](https://i.stack.imgur.com/dHEZr.png)
Обратите внимание, что plt.setp(leg.get_texts(), color='white')
- это просто ярлык для
for text in leg.get_texts():
text.set_color('white')