Я пытаюсь добавить штриховку к легенде о графах морского происхождения, но она не работает. Единственное, что я могу изменить, это размещение легенды и размер шрифта. Я продемонстрирую на простом примере (этот пример взят из https://matplotlib.org/gallery/api/legend.html):
import numpy as np
import matplotlib.pyplot as plt
# Make some fake data.
a = b = np.arange(0, 3, .02)
c = np.exp(a)
d = c[::-1]
# Create plots with pre-defined labels.
fig, ax = plt.subplots()
ax.plot(a, c, 'k--', label='Model length')
ax.plot(a, d, 'k:', label='Data length')
ax.plot(a, c + d, 'k', label='Total message length')
legend = ax.legend(loc='upper center', shadow=True, fontsize='x-large')
# Put a nicer background color on the legend.
legend.get_frame().set_facecolor('#00FFCC')
plt.show()
В этом примере заливка отображается правильно. Использование sns.set ():
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
# Make some fake data.
a = b = np.arange(0, 3, .02)
c = np.exp(a)
d = c[::-1]
# Create plots with pre-defined labels.
fig, ax = plt.subplots()
ax.plot(a, c, 'k--', label='Model length')
ax.plot(a, d, 'k:', label='Data length')
ax.plot(a, c + d, 'k', label='Total message length')
legend = ax.legend(loc='upper center', shadow=True, fontsize='x-large')
# Put a nicer background color on the legend.
legend.get_frame().set_facecolor('#00FFCC')
plt.show()
Теперь параметры loc и fontsize все еще работают, но затенение не появляется. Есть ли способ добавить затенение при использовании sns.set ()? Спасибо
Редактировать: я не упомянул, что использую собственный метод output_plot () для отображения этих изображений на веб-странице. Поэтому вместо plt.show () я использую print (output_plot ()) следующим методом:
def output_plot(clickable=False):
from io import BytesIO
import base64
import matplotlib.pyplot as plt
output = ""
fig = plt.gcf()
if clickable:
large_image = BytesIO()
fig.savefig(large_image, format='png')
large_image.seek(0)
large_image = base64.encodebytes(large_image.getvalue()).decode()
fig.set_size_inches([13.0/2,8.0/2])
small_image = BytesIO()
fig.savefig(small_image, format='png')
small_image.seek(0)
small_image = base64.encodebytes(small_image.getvalue()).decode()
if clickable:
output = """<span style="white-space: nowrap;">
<a href="javascript:(
function(){
Ext.create('Ext.window.Window', {
title: 'Graph',
height: 800,
width: 1100,
layout: 'fit',
html: '<img src=\\\'data:image/png;base64,%s\\\'/>'
}).show();
}
)()">
<img src='data:image/png;base64,%s'/>
</a>
</span>""" % (large_image, small_image)
else:
output = """<span style="white-space: nowrap;">
<img src='data:image/png;base64,%s'/>
</span>""" % small_image
return output
Я нахожусь на matplotlib версии 1.5.1 и seaborn версии 0.7.1