2016-04-27 6 views
0

Der folgende Code erzeugt das korrekte Diagramm mit plt.show(), schlägt aber fehl, wenn es in einem PDF- oder PNG-Bild gespeichert wird.matplotlib show funktioniert, während savefig für Unicode fehlschlägt

Ich habe verschiedene Vorschläge (siehe kommentierte Zeilen) in ähnlichen Fragen ausprobiert, aber keiner von ihnen funktioniert in diesem Fall. Png-Datei zeigt die Unicode-Zeichen als Boxen, während PDF einfach ignoriert sie.

##-*- coding: utf-8 -*- 
#from matplotlib import rc 
#rc('font', **font) 
#rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']}) 
#rc('font',**{'family':'serif','serif':['Palatino']}) 
#rc('text', usetex=True) 
import matplotlib.pyplot as plt 

plt.figure() 
plt.plot(range(10)) 
plt.xlabel(u"\u2736") 
plt.ylabel(u'\u03c4') 
plt.savefig('unicode.pdf') 
plt.savefig('unicode.png') 
#plt.show() 

Antwort

2

Sie waren fast da, als Sie versuchten, die Schriftfamilie zu ändern.

Nur bestimmte Schriftarten unterstützen Unicode-Zeichen. Sie können überprüfen, welche Schriftarten Sie installiert haben über:

import matplotlib.font_manager as fm 
set([f.name for f in fm.fontManager.ttflist]) 

Dann wechseln Sie zu einer Unicode-Schriftart, z. DejaVu Sans in Linux, Arial Unicode MS für Windows, Lucida Grande für Mac OS X, more on Wiki. Keine Notwendigkeit, tex zu verwenden:

plt.rcParams['font.family'] = 'DejaVu Sans' 
+0

Danke für den Vorschlag. "DejaVu Sans" existiert nicht auf Mac. Ich habe versucht, es zu installieren, ist aber irgendwie gescheitert. Aber das Ändern der Schriftart in Calibri funktionierte für das \ tau-Symbol. Es ist also definitiv ein Schriftproblem, wie Sie gesagt haben. Vielleicht können Sie andere Schriftart Optionen auf Ihre Antwort hinzufügen und die Möglichkeiten, Informationen über Schriften, das heißt 'Import matplotlib.font_manager als fm' ' fm.findSystemFonts (fontpaths = None, fontext = 'ttf') '' gesetzt zu bekommen ([ f.name für f in fm.fontManager.ttflist]) ' – Armut

+1

Ahh, tut mir leid, ich habe nicht auf Mac gecheckt. Ich habe einige Ressourcen für Schriftarten gefunden, die Unicode unterstützen, also werde ich die Antwort aktualisieren – cnosam

Verwandte Themen