Potrzebuję pobrać wydruk matplotlib i zamienić go na ścieżkę SVG, którą mogę użyć na wycinarce laserowej.Jak mogę uzyskać dane wyjściowe z wykresu matplotlib jako SVG?
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,100,0.00001)
y = x*np.sin(2*pi*x)
plt.plot(y)
plt.show()
Na przykład poniżej widać kształt fali. Chciałbym móc wypisać lub zapisać ten kształt fali jako ścieżkę SVG, którą będę mógł później wykorzystać w programie takim jak Adobe Illustrator.
Jestem zaznajomiony z biblioteką SVG o nazwie "Kair", z której może korzystać matplotlib (matplotlib.use('Cairo')
), ale nie jest dla mnie jasne, że da mi dostęp do ścieżki SVG, której potrzebuję, mimo że matplotlib będzie teraz używać Kair, aby wygenerować fabułę.
muszę Cairo pracuje na systemie, mogą z powodzeniem czerpać przykład złożoną ścieżek SVG, że rzeczywiście może edytować w programie Illustrator, ale nie mam sposób na moje równanie powyższe pod ścieżka SVG.
import cairo
from cairo import SVGSurface, Context, Matrix
s = SVGSurface('example1.svg', WIDTH, HEIGHT)
c = Context(s)
# Transform to normal cartesian coordinate system
m = Matrix(yy=-1, y0=HEIGHT)
c.transform(m)
# Set a background color
c.save()
c.set_source_rgb(0.3, 0.3, 1.0)
c.paint()
c.restore()
# Draw some lines
c.move_to(0, 0)
c.line_to(2 * 72, 2* 72)
c.line_to(3 * 72, 1 * 72)
c.line_to(4 * 72, 2 * 72)
c.line_to(6 * 72, 0)
c.close_path()
c.save()
c.set_line_width(6.0)
c.stroke_preserve()
c.set_source_rgb(0.3, 0.3, 0.3)
c.fill()
c.restore()
# Draw a circle
c.save()
c.set_line_width(6.0)
c.arc(1 * 72, 3 * 72, 0.5 * 72, 0, 2 * pi)
c.stroke_preserve()
c.set_source_rgb(1.0, 1.0, 0)
c.fill()
c.restore()
# Save as a SVG and PNG
s.write_to_png('example1.png')
s.finish()
(zauważ, że obraz wyświetlany o to png, jak stackoverflow nie akceptuje grafiki svg dla wyświetlacza)
Dzięki. Co ciekawe, musiałem zrobić powyższe przed wywołaniem plt.show(). Jeśli zadzwoniłem do plt.show() przed savefig svg zakończył się jako białe tło po otwarciu w programie Illustrator – user391339
@ user391339 Świetne miejsce, miałem poważny problem z pustym, białym zapisaniem, czy wiadomo, dlaczego tak się dzieje? – josh
@josh to nie tylko dla SVG, zobacz tutaj: https://stackoverflow.com/questions/9012487/matplotlib-pyplot-savefig-outputs-blank-image – gidim