python - ticks - tick_params




Come cambiare la dimensione del carattere su un grafico matplotlib (7)

Come si cambia la dimensione del font per tutti gli elementi (tick, etichette, titolo) su un grafico matplotlib?

So come modificare le dimensioni delle etichette di graduazione, questo è fatto con:

import matplotlib 
matplotlib.rc('xtick', labelsize=20) 
matplotlib.rc('ytick', labelsize=20) 

Ma come si cambia il resto?


Concordo pienamente con il Prof Huster che il modo più semplice per procedere è quello di modificare la dimensione della figura, che consente di mantenere i caratteri predefiniti. Ho appena dovuto completare questo con un'opzione bbox_inches quando si salvava la figura in formato PDF perché le etichette degli assi sono state tagliate.

import matplotlib.pyplot as plt
plt.figure(figsize=(4,3))
plt.savefig('Basic.pdf', bbox_inches='tight')

Dalla documentazione di matplotlib ,

font = {'family' : 'normal',
        'weight' : 'bold',
        'size'   : 22}

matplotlib.rc('font', **font)

Questo imposta il font di tutti gli elementi sul font specificato dall'oggetto kwargs, font .

In alternativa, è possibile utilizzare il metodo di update rcParams come suggerito in questa risposta :

matplotlib.rcParams.update({'font.size': 22})

o

import matplotlib.pyplot as plt
plt.rcParams.update({'font.size': 22})

È possibile trovare un elenco completo delle proprietà disponibili nella pagina personalizzazione matplotlib .


Questa è un'estensione della answer di Marius Retegan. Puoi creare un file JSON separato con tutte le tue modifiche e caricarlo con rcParams.update. Le modifiche si applicano solo allo script corrente. Così

import json
from matplotlib import pyplot as plt, rcParams

s = json.load(open("example_file.json")
rcParams.update(s)

e salva questo 'example_file.json' nella stessa cartella.

{
  "lines.linewidth": 2.0,
  "axes.edgecolor": "#bcbcbc",
  "patch.linewidth": 0.5,
  "legend.fancybox": true,
  "axes.color_cycle": [
    "#348ABD",
    "#A60628",
    "#7A68A6",
    "#467821",
    "#CF4457",
    "#188487",
    "#E24A33"
  ],
  "axes.facecolor": "#eeeeee",
  "axes.labelsize": "large",
  "axes.grid": true,
  "patch.edgecolor": "#eeeeee",
  "axes.titlesize": "x-large",
  "svg.fonttype": "path",
  "examples.directory": ""
}

Se sei un maniaco del controllo come me, potresti voler impostare in modo esplicito tutte le dimensioni dei caratteri:

import matplotlib.pyplot as plt

SMALL_SIZE = 8
MEDIUM_SIZE = 10
BIGGER_SIZE = 12

plt.rc('font', size=SMALL_SIZE)          # controls default text sizes
plt.rc('axes', titlesize=SMALL_SIZE)     # fontsize of the axes title
plt.rc('axes', labelsize=MEDIUM_SIZE)    # fontsize of the x and y labels
plt.rc('xtick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
plt.rc('ytick', labelsize=SMALL_SIZE)    # fontsize of the tick labels
plt.rc('legend', fontsize=SMALL_SIZE)    # legend fontsize
plt.rc('figure', titlesize=BIGGER_SIZE)  # fontsize of the figure title

Si noti che è anche possibile impostare le dimensioni chiamando il metodo rc su matplotlib :

import matplotlib

SMALL_SIZE = 8
matplotlib.rc('font', size=SMALL_SIZE)
matplotlib.rc('axes', titlesize=SMALL_SIZE)

# and so on ...

Sulla base di quanto sopra:

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

fontPath = "/usr/share/fonts/abc.ttf"
font = fm.FontProperties(fname=fontPath, size=10)
font2 = fm.FontProperties(fname=fontPath, size=24)

fig = plt.figure(figsize=(32, 24))
fig.text(0.5, 0.93, "This is my Title", horizontalalignment='center', fontproperties=font2)

plot = fig.add_subplot(1, 1, 1)

plot.xaxis.get_label().set_fontproperties(font)
plot.yaxis.get_label().set_fontproperties(font)
plot.legend(loc='upper right', prop=font)

for label in (plot.get_xticklabels() + plot.get_yticklabels()):
    label.set_fontproperties(font)

Usa plt.tick_params(labelsize=14)


matplotlib.rcParams.update({'font.size': 22})




font-size