Wie kann ich die Ausgabe eines Matplotlib-Plots als SVG erhalten?

Ich muss die Ausgabe eines Matplotlib-Plots in einen SVG-Pfad umwandeln, den ich auf einem Laserschneider verwenden kann.

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()

Unten sehen Sie beispielsweise eine Wellenform. Ich möchte diese Wellenform als SVG-Pfad ausgeben oder speichern können, mit dem ich später in einem Programm wie Adobe Illustrator arbeiten kann.

Mir ist eine SVG-Bibliothek namens "Cairo" bekannt, die matplotlib verwenden kann (matplotlib.use('Cairo')), mir ist jedoch nicht klar, ob ich damit auf den benötigten SVG-Pfad zugreifen kann, obwohl matplotlib jetzt Cairo zum Generieren des Plots verwenden wird.

Ich arbeite mit Cairo auf meinem System und kann erfolgreich ein Beispiel aus SVG-Pfaden zeichnen, die ich zwar in Illustrator bearbeiten kann, aber ich habe keine Möglichkeit, meine obige Gleichung in einen SVG-Pfad zu übertragen.

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()

(Beachten Sie, dass das hier angezeigte Bild ein PNG ist, da Stackoverflow keine SVG-Grafiken zur Anzeige akzeptiert.)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage