Saya membuat gambar di Matplotlib seperti ini:
from matplotlib import pyplot as plt
fig = plt.figure()
plt.plot(data)
fig.suptitle('test title')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
fig.savefig('test.jpg')
Saya ingin menentukan ukuran font untuk judul gambar dan label sumbu. Saya membutuhkan ketiganya menjadi ukuran font yang berbeda, jadi mengatur ukuran font global ( mpl.rcParams['font.size']=x
) bukan yang saya inginkan. Bagaimana cara mengatur ukuran font untuk judul gambar dan label sumbu secara terpisah?
python
matplotlib
vasek1
sumber
sumber
mpl.rcParams['font.size'] = 20
dan mencoba mengubah nilai menjadi 10 dan 14. Pertama saya menemukan bahwa saya mendapat kesalahan kecuali saya berubahmpl
menjadiplt
. Perubahan itu menghapus kesalahan tetapi kemudian baris kode tidak berpengaruh pada judul atau label saya. Yakin sintaks ini benar?mpl
perintah?Jawaban:
Fungsi berurusan dengan teks seperti
label
,title
, dll menerima parameter yang sama sepertimatplotlib.text.Text
. Untuk ukuran font Anda dapat menggunakansize/fontsize
:Untuk pengaturan
title
danlabel
ukuran global ,mpl.rcParams
berisiaxes.titlesize
danaxes.labelsize
. (Dari halaman):(Sejauh yang saya bisa lihat, tidak ada cara untuk mengatur
x
dany
memberi label ukuran secara terpisah.)Dan saya melihat itu
axes.titlesize
tidak mempengaruhisuptitle
. Saya kira, Anda perlu mengaturnya secara manual.sumber
mpl.rcParams
. Saya sudah mengedit jawaban saya.plt.rcParams.update({'axes.titlesize': 'small'})
rcParams
tautan, gunakanfigure.titlesize
selainaxes.titlesize
.python -c 'import matplotlib as mpl; print(mpl.__version__); print("figure.titlesize" in mpl.rcParams.keys())'
. Hasilnya adalah1.5.1
,True
. 1) Apa versi matplotlib yang Anda gunakan? Apa versi Python? 2) Mungkinkah itu bug di mana karena alasan tertentu ia menerimastr
tetapi tidakunicode
di Py2?Anda juga dapat melakukan ini secara global melalui kamus rcParams:
sumber
'x-large'
?pylab.rcParams.keys()
untuk melihat daftar parameter lengkap.ax.set_title('some title', fontsize=15)
,ax.set_xlabel('some xlabel', fontsize=12)
? SepertinyarcParams
hanya menerima string.'axes.labelsize': 32,
Jika Anda lebih terbiasa menggunakan
ax
objek untuk melakukan ploting, Anda mungkin menemukanax.xaxis.label.set_size()
lebih mudah diingat, atau setidaknya lebih mudah untuk menemukan menggunakan tab di terminal ipython. Tampaknya perlu operasi ulang setelah melihat efeknya. Sebagai contoh:Saya tidak tahu cara yang mirip untuk mengatur ukuran suptitle setelah itu dibuat.
sumber
fig.suptitle('test title', fontsize = 20)
sepertinya berhasil.ax.set_xlabel('xlabel', fontsize = 20)' also works, in which case we can do away with
ax.xaxis.label.set_size (20) `.ax.xaxis.label.set_size()
ketika saya bekerja secara interaktif dengan plot ipython dan saya ingin melakukan penilaian visual cepat dari berbagai ukuran font.plt.xlabel()
vsax.set_xlabel()
seperti yang Anda katakan), mereka setara, dengan peringatan bahwaplt.*
fungsi bekerja pada saat sumbu / angka. Jadi, jika Anda mengatur angka dengan banyak sumbu, Anda mungkin ingin menggunakan panggilan eksplisitax1.set_xlabel()
untuk menghindari kebingungan.Untuk hanya memodifikasi font judul (dan bukan font sumbu) saya menggunakan ini:
Fontdict menerima semua kwarg dari matplotlib.text.Text .
sumber
Pengaturan ukuran font secara global
rcParams
harus dilakukan denganDefault dapat dipulihkan menggunakan
Anda juga dapat melakukan ini dengan membuat style sheet di
stylelib
direktori di bawah direktori konfigurasi matplotlib (Anda bisa mendapatkan direktori konfigurasi darimatplotlib.get_configdir()
). Format style sheet adalahJika Anda memiliki style sheet
/path/to/mpl_configdir/stylelib/mystyle.mplstyle
maka Anda dapat menggunakannya viaAnda juga dapat membuat (atau memodifikasi) file matplotlibrc yang berbagi format
Bergantung pada file matplotlibrc mana yang Anda ubah, perubahan ini hanya akan digunakan untuk direktori kerja saat ini, untuk semua direktori kerja yang tidak memiliki file matplotlibrc, atau untuk semua direktori kerja yang tidak memiliki file matplotlibrc dan di mana tidak ada file matplotlibrc lainnya telah ditentukan. Lihat bagian ini dari halaman matplotlib khusus untuk lebih jelasnya.
Daftar lengkap
rcParams
tombol dapat diambil melaluiplt.rcParams.keys()
, tetapi untuk menyesuaikan ukuran font yang Anda miliki (cetak miring dikutip dari sini )axes.labelsize
- Font ukuran label x dan yaxes.titlesize
- Font ukuran judul sumbufigure.titlesize
- Ukuran judul gambar (Figure.suptitle()
)xtick.labelsize
- Font ukuran label centangytick.labelsize
- Font ukuran label centanglegend.fontsize
- Ukuran huruf untuk legenda (plt.legend()
,fig.legend()
)legend.title_fontsize
- Fontsize untuk judul legenda, disetelNone
sama dengan sumbu default. Lihat jawaban ini untuk contoh penggunaan.yang semuanya menerima ukuran string
{'xx-small', 'x-small', 'smaller', 'small', 'medium', 'large', 'larger', 'x-large', 'xxlarge'}
ataufloat
inpt
. Ukuran string didefinisikan relatif terhadap ukuran font default yang ditentukan olehfont.size
- ukuran font default untuk teks, diberikan dalam poin. 10 pt adalah nilai standarSelain itu, berat dapat ditentukan (meskipun hanya untuk default yang muncul) oleh
font.weight
- Bobot default font yang digunakan olehtext.Text
. Menerima{100, 200, 300, 400, 500, 600, 700, 800, 900}
atau'normal'
(400),'bold'
(700)'lighter'
,, dan'bolder'
( relatif sehubungan dengan berat saat ini ).sumber
Solusi alternatif untuk mengubah ukuran font adalah mengganti padding. Saat Python menyimpan PNG Anda, Anda bisa mengubah tata letak menggunakan kotak dialog yang terbuka. Jarak antar sumbu, padding jika Anda suka dapat diubah pada tahap ini.
sumber
Tempatkan
right_ax
sebelumnyaset_ylabel()
ax.right_ax.set_ylabel('AB scale')
sumber
7 (solusi terbaik)
6 (solusi yang sedikit lebih buruk)
sumber