Как обновить интервал между метками легенды после изменения размера шрифта легенды в matplotlib? - PullRequest
7 голосов
/ 16 февраля 2012

Я пишу скрипт, который сохраняет фигуру с несколькими стилями форматирования, среди которых размер шрифта текста легенды.

В файле legend.labelspacing в файле rcparams или в файле matplotlibrc интервал между метками указывается в долях от размера шрифта, поэтому можно ожидать, что фактический интервал изменится, если размер шрифта будет изменен. Однако, поскольку фактический интервал, вероятно, рассчитывается при первом создании легенды, любое последующее изменение размера шрифта существующих текстовых объектов легенды не влияет на расстояние между метками. Есть ли способ обновить интервал между метками легенды после изменения размера шрифта существующего объекта метки легенды? Итак, вот что я хотел бы сделать:

  1. Сюжет с легендой
  2. сохранить рисунок (отформатировать в соответствии с rcparams или файлом matplotlibrc)
  3. изменить несколько свойств форматирования (ширина строки, размеры шрифта и т. Д.)
  4. сохранить рисунок снова с обновленными свойствами форматирования, включая заново настроенный интервал надписей легенды

Есть ли способ сделать это, не меняя rcparams и не восстанавливая фигуру?

1 Ответ

6 голосов
/ 16 февраля 2012

Просто вызовите legend () с параметром labelpacing, вот пример:

import pylab as pl

pl.plot([0,1],[0,1], label="a")
pl.plot([0,2],[0,2], label="b")

pl.legend()
pl.savefig("p1.png")
pl.legend(labelspacing=2)
pl.savefig("p2.png")

Для повторного использования параметров:

import pylab as pl

pl.plot([0,1],[0,1], label="a")
pl.plot([0,2],[0,2], label="b")
params = dict(loc="right", prop=dict(size=9))
pl.legend(**params)
pl.savefig("p1.png")
params["labelspacing"] = 2
pl.legend(**params)
pl.savefig("p2.png")
...