Ich muss die Ausgabe eines Matplotlib-Plots nehmen und es in einen SVG-Pfad verwandeln, den ich auf einem Laserschneider verwenden kann.Wie kann ich die Ausgabe eines Matplotlib-Plots als SVG erhalten?
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()
Zum Beispiel unten sehen Sie eine Wellenform. Ich möchte in der Lage sein, diese Wellenform als SVG-Pfad auszugeben oder zu speichern, mit dem ich später in einem Programm wie Adobe Illustrator arbeiten kann.
Ich kenne eine SVG-Bibliothek namens "Cairo", die Matplotlib verwenden kann (matplotlib.use('Cairo')
), aber es ist mir nicht klar, dass dies mir Zugang zu dem SVG-Pfad geben wird, den ich brauche, obwohl Matplotlib jetzt verwenden wird Kairo, um das Grundstück zu generieren.
ich kairo habe auf meinem System zu arbeiten, und kann erfolgreich ein Beispiel bestand aus SVG Pfaden zeichnen, die ich in Illustrator tatsächlich bearbeiten kann, aber ich weiß nicht, einen Weg, um meine Gleichung zu nehmen oben in ein SVG-Pfad
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 Bild, das hier angezeigt ist ein png, wie Stackoverflow SVG-Grafiken für die Anzeige nicht akzeptiert)
Danke. Interessanterweise musste ich das obige tun, bevor ich plt.show() anrief. Wenn ich plt.show() anrief. vor savefig endete die svg nur als weißer hintergrund, wenn sie im illustrator geöffnet wurde – user391339
@ user391339 Großartiger platz.Ich hatte ein echtes Problem mit dem blank-white-save.Es ist bekannt, warum das passiert? – josh
@josh das ist nicht nur für SVG, siehe hier: https://stackoverflow.com/questions/9012487/matplotlib-pyplot-savefig-outputs-blank-image – gidim