2015-09-22 7 views
1

Я хотел бы написать функцию, которая изменяет шрифт всех меток на фигуре, которую я передаю, без фактического изменения самих меток.Matplotlib: установить шрифт метки без метки настройки

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

В настоящее время я использую несколько словарей шрифта так:

titleFont = {'family' : 'Arial', 
      'weight' : 'bold', 
      'size' : 20} 
axesFont = {'family' : 'Arial', 
      'weight' : 'bold', 
      'size' : 18} 
axesTickFont = {'family' : 'Arial', 
       'weight' : 'bold', 
       'size' : 16}` 

И затем установить размеры шрифтов с помощью команд по линиям:

ax.set_title('My Plot',**titleFont) 

Вопрос заключается в том, что с помощью данной команды , Мне нужно указать заголовок сюжета, когда все, что я хочу сделать, это установить стиль шрифта существующего заголовка.

Нечто подобное было бы идеально:

def set_fonts(axis): 
    axis.set_title(**titleFont) 
    axis.set_ylabel(**axesFont) 
    axis.set_xlabel(**axesFont) 
    return axis 

ответ

1

Это, вероятно, не самое чистое решение, но он должен делать то, что вы хотите:

def set_fonts(axis): 
    axis.set_title(axis.get_title(), **titleFont) 
    axis.set_ylabel(axis.get_ylabel(), **axesFont) 
    axis.set_xlabel(axis.get_xlabel(), **axesFont) 
    return axis 

В противном случае вы можете получить прямой доступ к соответствующим экземплярам художника , что позволяет избежать переназначения текста:

def set_fonts(axis): 
    plt.setp(axis.title, **titleFont) 
    plt.setp(axis.xaxis.label, **axesFont) 
    plt.setp(axis.yaxis.label, **axesFont) 
    return axis 
+0

Thanks @hitzg! это работает очень хорошо. Я не смог реализовать второе решение, потому что не знаю, как указать объект ticklabels. axis.xaxis.ticklabels не работает. Вы знаете, где я могу найти разбивку объектов mpl, чтобы я мог лучше понять, что происходит с объектно-ориентированной точки зрения? – YoungPadawan

+1

Чтобы получить объекты ticklabel, вы можете использовать 'axis.get_xticklabels()' и 'axis.get_yticklabels()'. Я согласен, что несколько противоречиво, что некоторые из функций getter возвращают артистов, а некоторые - только атрибут исполнителя (например, 'axis.get_xlabel()', который возвращает только текст, а не текст-исполнителя). – hitzg

+0

И с методом plt.setp, как я могу получить доступ к ticklabels? – YoungPadawan

Смежные вопросы