Ho bisogno di prendere l'output di un grafico matplotlib e trasformarlo in un percorso SVG che posso usare su un cutter laser.Come posso ottenere l'output di un grafico matplotlib come 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()
Ad esempio, qui sotto si vede una forma d'onda. Mi piacerebbe essere in grado di stampare o salvare questa forma d'onda come un percorso SVG che posso poi lavorare con un programma come Adobe Illustrator.
Sono a conoscenza di una libreria SVG denominata "Cairo" che può usare matplotlib (matplotlib.use('Cairo')
), tuttavia non mi è chiaro che questo mi consentirà di accedere al percorso SVG di cui ho bisogno, anche se Matplotlib utilizzerà ora Il Cairo per generare la trama.
Devo cairo lavorare sul mio sistema, e può disegnare con successo un esempio composta da percorsi SVG che posso effettivamente modificare in Illustrator, ma non ho un modo per prendere la mia equazione sopra in un percorso 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()
(si noti che l'immagine visualizzata ecco un png, come StackOverflow non accetta grafica SVG per la visualizzazione)
Grazie. Interessante, avevo bisogno di fare quanto sopra prima di chiamare plt.show() Se ho chiamato plt.show() prima di savefig lo svg finiva per essere solo uno sfondo bianco quando veniva aperto nell'illustrator – user391339
@ user391339 Ottimo posto, stavo avendo un vero problema con il blank-white-save.È noto perché questo succede? – josh
@josh questo non è solo per SVG, vedere qui: https://stackoverflow.com/questions/9012487/matplotlib-pyplot-savefig-outputs-blank-image – gidim