Brzmi to jak łatwy problem, ale nie znajduję żadnego skutecznego rozwiązania, aby zmienić czcionkę (nie rozmiar czcionki) na wykresie utworzonym za pomocą matplotlib w Pythonie.
Znalazłem kilka samouczków, aby zmienić domyślną czcionkę matplotlib, modyfikując niektóre pliki w folderach, w których matplotlib przechowuje domyślną czcionkę - zobacz ten post na blogu - ale szukam mniej radykalnego rozwiązania, ponieważ chciałbym użyć więcej niż jednego czcionka na moim wykresie (tekst, etykieta, etykieta osi itp.).
python
fonts
matplotlib
SirC
źródło
źródło
hfont = {'fontname':'Helvetica'} plt.annotate('Country ', (0.17,0.95), xytext=None, xycoords='figure fraction',size=28, color='red', horizontalalignment = 'left', **hfont)
a/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]))
zamiast tego błąd występuje, jeśli użyję nazwy czcionki Comic Sans MS, jak w twoim przykładzie, kod działa.Odpowiedzi:
Powiedzmy, że w tytule chcesz otrzymać Comic Sans, a dla wytwórni x Helvetica.
csfont = {'fontname':'Comic Sans MS'} hfont = {'fontname':'Helvetica'} plt.title('title',**csfont) plt.xlabel('xlabel', **hfont) plt.show()
źródło
/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]))
. Jak mogę zainstalować Helvetica w zestawie czcionek znanych z matplotlib?Możesz także użyć
rcParams
do globalnej zmiany rodziny czcionek.import matplotlib.pyplot as plt plt.rcParams["font.family"] = "cursive" # This will change to your computer's default cursive font
Lista argumentów rodziny czcionek matplotlib znajduje się tutaj .
źródło
Wolę zatrudniać:
from matplotlib import rc #rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']}) rc('font',**{'family':'serif','serif':['Times']}) rc('text', usetex=True)
źródło
import pylab as plb plb.rcParams['font.size'] = 12
lub
import matplotlib.pyplot as mpl mpl.rcParams['font.size'] = 12
źródło
Czcionka Helvetica nie jest dostarczana z systemem Windows, więc aby z niej skorzystać, należy ją pobrać jako plik .ttf. Następnie możesz skierować do niego matplotlib w ten sposób (zastąp „crm10.ttf” swoim plikiem):
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)
pokaże ci, gdzie powinieneś umieścić plik .ttf.Możesz zobaczyć dane wyjściowe tutaj: https://matplotlib.org/gallery/api/font_file.html
źródło
fontproperties
globalnie, dzięki czemu nie trzeba określać go z każdym wywołaniu npset_title()
,set_xlabel()
itp?