Gibt es sowieso die Mitrelimit beim Speichern einer Matplotlib-Plot auf Svg? Ich möchte diesen Fehler programmatisch umgehen: https://bugs.launchpad.net/inkscape/+bug/1533058 während ich das manuell in der ".svg" Textdatei ändern muss.Wie man Miterlimit beim Speichern als Svg mit Matplotlib setzt
Antwort
Dieser Parameter ist definiert als 'stroke-miterlimit': '100000'
und ist in backend_svg.py fest eingestellt. Es gibt keinen solchen Parameter in matplotlibc, daher ist es unwahrscheinlich, dass ein Anpassen mit Stylesheet möglich ist.
habe ich den folgenden Code, um dieses Problem zu beheben:
def fixmiterlimit(svgdata, miterlimit = 10):
# miterlimit variable sets the desired miterlimit
mlfound = False
svgout = ""
for line in svgdata:
if not mlfound:
# searches the stroke-miterlimit within the current line and changes its value
mlstring = re.subn(r'stroke-miterlimit:([0-9]+)', "stroke-miterlimit:" + str(miterlimit), line)
if mlstring[1]: # use number of changes made to the line to check whether anything was found
mlfound = True
svgout += mlstring[0] + '\n'
else:
svgout += line + '\n'
else:
svgout += line + '\n'
return svgout
Und es dann so nennen (mit dem Trick von diesem post):
import StringIO
...
imgdata = StringIO.StringIO() # initiate StringIO to write figure data to
# the same you would use to save your figure to svg, but instead of filename use StringIO object
plt.savefig(imgdata, format='svg', dpi=90, bbox_inches='tight')
imgdata.seek(0) # rewind the data
svg_dta = imgdata.buf # this is svg data
svgoutdata = fixmiter(re.split(r'\n', svg_dta)) # pass as an array of lines
svgfh = open('figure1.svg', 'w')
svgfh.write(svgoutdata)
svgfh.close()
Der Code ändert sich im Grunde die schlag- Miterlimit-Parameter in der SVG-Ausgabe vor dem Schreiben in die Datei. Arbeitete für mich.
Danke an drYG für die nette Antwort und an aeolus für die Frage. Ich habe ein ähnliches Problem aufgrund dieses Inkscape Bug und das Fehlen einer einfachen Möglichkeit, die Einstellung in Matplotlib zu ändern. Die Antwort von drYG scheint jedoch für python3 nicht zu funktionieren. Ich habe es aktualisiert und einige Tippfehler geändert (unabhängig von der Python-Version). Hoffentlich wird es jemand anderen Zeit sparen, während ich versuche, das nachzuholen, was ich verloren habe!
def fixmiterlimit(svgdata, miterlimit = 10):
# miterlimit variable sets the desired miterlimit
mlfound = False
svgout = ""
for line in svgdata:
if not mlfound:
# searches the stroke-miterlimit within the current line and changes its value
mlstring = re.subn(r'stroke-miterlimit:([0-9]+)', "stroke-miterlimit:" + str(miterlimit), line)
#if mlstring[1]: # use number of changes made to the line to check whether anything was found
#mlfound = True
svgout += mlstring[0] + '\n'
else:
svgout += line + '\n'
return svgout
import io, re
imgdata = io.StringIO() # initiate StringIO to write figure data to
# the same you would use to save your figure to svg, but instead of filename use StringIO object
plt.gca()
plt.savefig(imgdata, format='svg', dpi=90, bbox_inches='tight')
imgdata.seek(0) # rewind the data
svg_dta = imgdata.getvalue() # this is svg data
svgoutdata = fixmiterlimit(re.split(r'\n', svg_dta)) # pass as an array of lines
svgfh = open('test.svg', 'w')
svgfh.write(svgoutdata)
svgfh.close()
- 1. SVG - wie man Text line-height setzt
- 2. Öffnen/Speichern als eigenes Format von Matplotlib?
- 3. Kein SVG-Graph beim Speichern mit Gephi
- 4. Speichern SVG als PNG mit Javascript Unbekannt DOM Ausnahme
- 5. Python matplotlib als TIFF speichern
- 6. Wie kann ich Svg-Code als. Svg Bild speichern?
- 7. Wie setzt man das Hintergrundbild eines SVG-Rect-Elements?
- 8. python matplotlib Grafik als Datendatei speichern
- 9. Wie man Text zwischen Plots in Matplotlib setzt
- 10. Wie man einen Matplotlib Graph speichern
- 11. Wie man kontinuierlichen Webjob als Singleton setzt?
- 12. Wie setzt man das Attribut des SVG Kindelements?
- 13. fabric.js exportiert als SVG-Problem mit Kreisen
- 14. Speichern Sie ein Google-Diagramm als SVG?
- 15. Matplotlib, wie man Array als Bild darstellt?
- 16. Wie man Android pathEffect zu einem SVG-Muster macht
- 17. Scatterplot-Animationen mit Matplotlib speichern
- 18. jupyter Notebook Inline-Plots als svg
- 19. Wie man ein SVG als Baumstruktur mit SnapSVG durchläuft?
- 20. Wie SVG-Datei als Hintergrund
- 21. Wie div als Bild beim Klicken speichern?
- 22. Wie setzt man MXNET_CUDNN_AUTOTUNE_DEFAULT?
- 23. Wie man Fortschrittsbalken setzt
- 24. Importieren einer SVG-Datei a Matplotlib Abbildung
- 25. Speichern/[Speichern als] Dialogfeld beim Download mit Wordpress
- 26. Wie setzt man div richtig?
- 27. Wie setzt man "camera position" für 3D-Plots mit Python/Matplotlib?
- 28. Wie man die Deckkraft der Hintergrundfarbe des Graphen mit Matplotlib setzt
- 29. Wie man eine Funktion als Funktionsargument in Swift setzt 3
- 30. Wie zeigt man SVG mit Django-Objekten?