Es klingt nach einem einfachen Problem, aber ich finde keine effektive Lösung, um die Schriftart (nicht die Schriftgröße) in einem mit matplotlib in Python erstellten Plot zu ändern.
Ich habe ein paar Tutorials gefunden, um die Standardschriftart von matplotlib zu ändern, indem ich einige Dateien in den Ordnern geändert habe, in denen matplotlib die Standardschriftart speichert - siehe diesen Blog-Beitrag -, aber ich suche nach einer weniger radikalen Lösung, da ich mehr als eine verwenden möchte Schriftart in meinem Plot (Text, Beschriftung, Achsenbeschriftung usw.).
python
fonts
matplotlib
SirC
quelle
quelle
hfont = {'fontname':'Helvetica'} plt.annotate('Country ', (0.17,0.95), xytext=None, xycoords='figure fraction',size=28, color='red', horizontalalignment = 'left', **hfont)
und der Fehler ist/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/font_manager.py:1236: UserWarning: findfont: Font family ['Helvetica'] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext]))
stattdessen, wenn ich wie in Ihrem Beispiel als Schriftart Comic Sans MS verwende, funktioniert der Code.Antworten:
Angenommen, Sie möchten Comic Sans für den Titel und Helvetica für das x-Label.
csfont = {'fontname':'Comic Sans MS'} hfont = {'fontname':'Helvetica'} plt.title('title',**csfont) plt.xlabel('xlabel', **hfont) plt.show()
quelle
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/font_manager.py:1236: UserWarning: findfont: Font family ['Helvetica'] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext]))
. Wie kann ich Helvetica in den von matplotlib bekannten Schriftarten installieren?Sie können
rcParams
die Schriftfamilie auch global ändern.import matplotlib.pyplot as plt plt.rcParams["font.family"] = "cursive" # This will change to your computer's default cursive font
Die Liste der Argumente der Matplotlib-Schriftfamilie finden Sie hier .
quelle
Ich beschäftige lieber:
from matplotlib import rc #rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']}) rc('font',**{'family':'serif','serif':['Times']}) rc('text', usetex=True)
quelle
import pylab as plb plb.rcParams['font.size'] = 12
oder
import matplotlib.pyplot as mpl mpl.rcParams['font.size'] = 12
quelle
Die Helvetica-Schriftart ist nicht in Windows enthalten. Um sie zu verwenden, müssen Sie sie als .ttf-Datei herunterladen. Dann können Sie matplotlib wie folgt darauf verweisen (ersetzen Sie "crm10.ttf" durch Ihre Datei):
import os from matplotlib import font_manager as fm, rcParams import matplotlib.pyplot as plt fig, ax = plt.subplots() fpath = os.path.join(rcParams["datapath"], "fonts/ttf/cmr10.ttf") prop = fm.FontProperties(fname=fpath) fname = os.path.split(fpath)[1] ax.set_title('This is a special font: {}'.format(fname), fontproperties=prop) ax.set_xlabel('This is the default font') plt.show()
print(fpath)
zeigt Ihnen, wo Sie die .ttf platzieren sollten.Sie können die Ausgabe hier sehen: https://matplotlib.org/gallery/api/font_file.html
quelle
fontproperties
global , so dass Sie es nicht angeben müssen , um mit jedem Aufruf zBset_title()
,set_xlabel()
usw.?