Я начал с matplot и управлял некоторыми основными сюжетами, но теперь мне трудно понять, как делать то, что мне сейчас нужно :(
Мой актуальный вопрос заключается в том, как разместить глобальный заголовок и глобальную легенду на фигуре с частями.
Я делаю подзаголовки 2x3, где у меня много разных графиков разных цветов (около 200). Чтобы различить (большинство) из них, я написал что-то вроде
def style(i, total):
return dict(color=jet(i/total),
linestyle=["-", "--", "-.", ":"][i%4],
marker=["+", "*", "1", "2", "3", "4", "s"][i%7])
fig=plt.figure()
p0=fig.add_subplot(321)
for i, y in enumerate(data):
p0.plot(x, trans0(y), "-", label=i, **style(i, total))
# and more subplots with other transN functions
(какие-либо мысли по этому поводу? :)) У каждого подзаговора одна и та же функция стиля.
Теперь я пытаюсь получить глобальное название для всех сюжетных линий, а также глобальную легенду, объясняющую все стили. Также мне нужно сделать шрифт крошечным, чтобы он соответствовал всем 200 стилям (мне не нужны полностью уникальные стили, но по крайней мере некоторые попытки)
Может кто-нибудь помочь мне решить эту задачу?
источник
Ответы:
Глобальный заголовок : в новых выпусках matplotlib можно использовать метод Figure.suptitle () для
Figure
:В качестве альтернативы (на основе комментария @Steven C.Howell ниже (спасибо!)) Используйте функцию matplotlib.pyplot.suptitle () :
источник
import matplotlib.pyplot as plt
, кто выполняет импорт таким образом:, команда может быть введена просто как иplt.figure(); plt.suptitle('Title centered above all subplots'); plt.subplot(231); plt.plot(data[:,0], data[:,1]);
т.д ...В дополнение к ответу orbeckst можно также сдвинуть подзаголовки вниз. Вот MWE в стиле ООП:
дает:
источник
Для надписей легенды можно использовать что-то вроде ниже. Legendlabels - это сохраненные линии графика. modFreq - это имя фактических меток, соответствующих линиям графика. Затем третий параметр - это расположение легенды. Наконец, вы можете передавать любые аргументы, как я здесь, но в основном нужны первые три. Кроме того, вы должны правильно установить метки в команде plot. Просто вызвать легенду с параметром местоположения, и она найдет метки в каждой из строк. Мне повезло создать свою собственную легенду, как показано ниже. Кажется, работает во всех случаях, когда никогда не удавалось найти другой путь должным образом. Если вы не понимаете, дайте мне знать:
Вы также можете использовать ножку для изменения размера шрифта или почти любого параметра легенды.
Глобальный заголовок, как указано в приведенном выше комментарии, может быть выполнен путем добавления текста по предоставленной ссылке: http://matplotlib.sourceforge.net/examples/pylab_examples/newscalarformatter_demo.html
источник
suptitle
Кажется, это правильный путь, но, как бы то ни было, уfigure
него естьtransFigure
свойство, которое вы можете использовать:источник