मैं एक matplotlib साजिश के उत्पादन लेने के लिए और यह एक एसवीजी रास्ता है कि मैं एक लेजर कटर पर उपयोग कर सकते हैं में बदल जाने की जरूरत है।मैं एक एसवीजी के रूप में matplotlib साजिश का उत्पादन कैसे प्राप्त कर सकता हूं?
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()
उदाहरण के लिए, नीचे एक तरंग देखें। मैं इस तरंग को एक एसवीजी पथ के रूप में आउटपुट या सहेजने में सक्षम होना चाहता हूं जिसे मैं बाद में एडोब इलस्ट्रेटर जैसे प्रोग्राम में काम कर सकता हूं।
मुझे "कैरो" नामक एक एसवीजी लाइब्रेरी के बारे में पता है, जो मैटलप्लिब (matplotlib.use('Cairo')
) का उपयोग कर सकता है, हालांकि यह मुझे स्पष्ट नहीं है कि इससे मुझे एसवीजी पथ तक पहुंच मिल जाएगी, भले ही मैटलप्लिपिब अब उपयोग कर रहे हों साजिश उत्पन्न करने के लिए काहिरा।
मैं काहिरा अपने सिस्टम पर काम कर रहा है, और सफलतापूर्वक कि मैं वास्तव में Illustrator में संपादित करें, लेकिन मैं इसके बाद के संस्करण में मेरी समीकरण लेने के लिए एक तरीका मौजूद नहीं है सकते हैं एसवीजी पथ से बना एक उदाहरण आकर्षित कर सकते हैं एक एसवीजी पथ।
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()
(ध्यान दें कि छवि यहाँ प्रदर्शित एक png है, stackoverflow प्रदर्शन के लिए svg ग्राफिक्स स्वीकार नहीं करता है के रूप में)
धन्यवाद। दिलचस्प बात यह है कि मैं अगर मैं plt.show बुलाया plt.show बुला() से पहले ऊपर करने के लिए की जरूरत है।() savefig से पहले svg जब चित्रकार में खोला सिर्फ एक सफेद पृष्ठभूमि में किया जा रहा समाप्त हो गया। – user391339
@ user391339 महान जगह है। मैं खाली-सफेद-बचाने के। यह ज्ञात है क्यों यह? – josh
@josh होता है के साथ एक असली मुद्दा यह सिर्फ नहीं है हो रही थी । https://stackoverflow.com/questions/9012487/matplotlib-pyplot-savefig-outputs-blank-image: एसवीजी के लिए यहाँ देखें – gidim