Как сохранить текст на графиках Python, редактируемый в файлах SVG? - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь сохранить график Python в виде файла SVG:

import matplotlib as mpl
mpl.use('svg')
import matplotlib.pyplot as plt
import numpy as np

plt.figure()
x = np.linspace(0,2*np.pi)
y = np.sin(x)
plt.plot(x, y)
plt.xlabel('Phase $\phi$')
plt.ylabel('Signal')
plt.savefig('SineSignal.svg', format = 'svg')

Работает до сих пор.Но как только я открываю файл в Inkscape, я больше не могу редактировать текст.Похоже, Python сохранил текст в виде графики, а не как текст.Из-за этого я не могу ни изменять шрифт, размер шрифта и т. Д. В Inkscape, ни искать текстовые элементы на графиках в PDF-файле, который я создаю с использованием латекса.

Другой вариант - сохранить график, поскольку PGF (в этом случае mpl.use ('svg') должен быть заменен на mpl.use ('pgf')):

plt.savefig('SineSignal.pgf')

Таким образом, я все еще не могу редактировать шрифт / размер шрифта, но, по крайней мере, я могу искать текстовые элементы в pdf.

Есть предложения?Использование TikZ в Python не вариант, потому что функции весьма ограничены, и графики будут выглядеть по-другому.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Нашел ответ.Вы можете использовать

new_rc_params = {'text.usetex': False,
"svg.fonttype": 'none'
}
mpl.rcParams.update(new_rc_params)

для предотвращения рендеринга svg-текста в виде путей.Для более подробных инструкций взгляните на Есть ли эффективный способ сохранить 2D-графики в виде векторной графики в Python? .

0 голосов
/ 15 мая 2018

Возможность делать с нуля

Минимальный код для файла SVG с красным кружком; сохранить в circle.svg:

<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 200 200">
  <circle id="circle--red" cx="30" cy="30" r="30" fill="#f00"/>
</svg>

Вероятно, вам нужно <path>, чтобы создать кривую синусоиды в SVG. https://www.w3schools.com/graphics/svg_path.asp Заменить <circle> элемент выше. Для текста используйте <text>: https://www.w3schools.com/graphics/svg_text.asp

Если вам нужны оси, вы можете создавать их самостоятельно, но использование Inkscape или другого SVG-совместимого графического редактора может помочь в создании прототипа для осей.

...