Matplotlib уменьшает размер шрифта для меток - PullRequest
238 голосов
/ 17 июня 2011

На рисунке matplotlib, как я могу сделать размер шрифта для меток тиков, используя ax1.set_xticklabels() меньше?

Далее, как можно повернуть его из горизонтального в вертикальное положение?

Ответы [ 10 ]

409 голосов
/ 08 июля 2012

Существует более простой способ.Я только что нашел:

import matplotlib.pyplot as plt
# We prepare the plot  
fig = plt.figure(1)
# We define a fake subplot that is in fact only the plot.  
ax = fig.add_subplot(111)

# We change the fontsize of minor ticks label 
ax.tick_params(axis='both', which='major', labelsize=10)
ax.tick_params(axis='both', which='minor', labelsize=8)

Это только ответ на размер label часть вашего вопроса, хотя.

152 голосов
/ 19 мая 2017

Чтобы указать размер шрифта и поворот одновременно, попробуйте следующее:

plt.xticks(fontsize=14, rotation=90)
105 голосов
/ 17 июня 2011

Обратите внимание, что в более новых версиях MPL есть ярлык для этой задачи.Пример показан в другом ответе на этот вопрос: https://stackoverflow.com/a/11386056/42346

Код ниже приведен для иллюстративных целей и не обязательно может быть оптимизирован.

import matplotlib.pyplot as plt
import numpy as np

def xticklabels_example():
    fig = plt.figure() 

    x = np.arange(20)
    y1 = np.cos(x)
    y2 = (x**2)
    y3 = (x**3)
    yn = (y1,y2,y3)
    COLORS = ('b','g','k')

    for i,y in enumerate(yn):
        ax = fig.add_subplot(len(yn),1,i+1)

        ax.plot(x, y, ls='solid', color=COLORS[i]) 

        if i != len(yn) - 1:
            # all but last 
            ax.set_xticklabels( () )
        else:
            for tick in ax.xaxis.get_major_ticks():
                tick.label.set_fontsize(14) 
                # specify integer or one of preset strings, e.g.
                #tick.label.set_fontsize('x-small') 
                tick.label.set_rotation('vertical')

    fig.suptitle('Matplotlib xticklabels Example')
    plt.show()

if __name__ == '__main__':
    xticklabels_example()

enter image description here

45 голосов
/ 14 мая 2015

Кроме того, вы можете просто сделать:

import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size 
23 голосов
/ 21 января 2016

В текущих версиях Matplotlib вы можете сделать axis.set_xticklabels(labels, fontsize='small').

16 голосов
/ 20 апреля 2018

Другая альтернатива

У меня есть два графика рядом, и я бы хотел настроить метки отдельно.

Вышеуказанные решения были близки, но они не помогли мне.Я нашел свое решение на этой странице matplotlib .

ax.xaxis.set_tick_params(labelsize=20)

. Это помогло и пошло прямо к делу.Для моего случая использования, это был график справа, который нужно было отрегулировать.Для графика слева, так как я создавал новые метки тиков, я смог настроить шрифт таким же образом, как установить для меток.

, т.е.

ax1.set_xticklabels(ax1_x, fontsize=15)
ax1.set_yticklabels(ax1_y, fontsize=15)

Таким образом, я использовал для правильного сюжета,

ax2.xaxis.set_tick_params(labelsize=24)
ax2.yaxis.set_tick_params(labelsize=24)

Минор тонко ... Я знаю ... но я надеюсь, что это кому-то поможет:)

Бонусные баллы, если кто-то знает, какнастроить размер шрифта метки порядка величины.

enter image description here

14 голосов
/ 16 июня 2016

Для меньшего шрифта я использую

ax1.set_xticklabels(xticklabels, fontsize=7)

и все работает!

14 голосов
/ 20 ноября 2014

Вы также можете изменить параметры отображения метки, такие как размер шрифта, с помощью строки, подобной этой:

zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]
13 голосов
/ 09 июня 2017
plt.tick_params(axis='both', which='minor', labelsize=12)
8 голосов
/ 27 мая 2018

У меня сработало следующее:

ax2.xaxis.set_tick_params(labelsize=7)
ax2.yaxis.set_tick_params(labelsize=7)

Преимущество вышеописанного заключается в том, что вам не нужно указывать array из labels и работать с любыми данными на axes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...