Не могу изменить размер метки Python Mathplot - PullRequest
0 голосов
/ 22 января 2019

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

Однако мне удалось изменить только размер текста для легенд, и независимо от того, насколько сильно я изменил значение размера текста для меток и меток, они остаются неизменными.

Я пробовал следующие решения, которые нашел на этом сайте, но ни одно из них не работает (используя стандартный импорт mathplotlib.plytplot в качестве plt):

#Attempt #1
params = {'axes.labelsize': 20,'axes.titlesize':20, 'legend.fontsize': 20, 'xtick.labelsize': 20, 'ytick.labelsize': 20}
plt.rcParams.update(params)

################################################

#Attempt #2
MEDIUM_SIZE = 16
BIGGER_SIZE = 12

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

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

################################################

#Attempt #3
plt.rcParams['axes.linewidth'] = 20.0
plt.rcParams['xtick.labelsize']=8
plt.rcParams['ytick.labelsize']=8

################################################

#Attempt #4
ax = plt.subplot(111, xlabel='x', ylabel='y', title='title')
for item in ([ax.title, ax.xaxis.label, ax.yaxis.label] +
         ax.get_xticklabels() + ax.get_yticklabels()):
item.set_fontsize(20)

Я ожидал размера меток и метокизменить, изменив соответствующие параметры.Однако они всегда остаются неизменными.

Например, установив для всех размеров шрифта значение 12, я получаю следующий график:

enter image description here

Изменяя размеры до 18, я получаю следующий график:

enter image description here

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

Я уже пробовал решения, предложенные здесь, без каких-либо результатов:

Как изменить размер шрифта насюжет matplotlib

Почему метка matplotlib 'fontsize' не работает?

Python: как увеличить / уменьшить размер шрифта xи у метки тиков?

ОБНОВЛЕНИЕ: Я попробовал решение, предложенное пользователем Mstaino, и оно работало, чтобы изменить размер меток тиков:

enter image description here

Теперь мне просто нужно найти способ изменить размер меток для осей, поскольку ни одно решение, которое я пробовал до сих пор, не можетизмените их (как вы можете видеть на изображениях).

1 Ответ

0 голосов
/ 24 января 2019

Не уверен, что это «самый эффективный» способ, но вы можете получить доступ к тикам, используя plt.xticks(), и менять их один за другим (используя цикл for). Что касается метки, просто передайте prop={'size': your_size}.

(Изменить) Что касается меток, просто передайте соответствующие **kwargs: fontsize и color

Пример:

x= list(range(10))
y = [i**2 for i in x]

fontsize_x = 30
fontsize_y = 20
fontsize_label = 15

plt.plot(x, y, label='data')
plt.legend(loc='best', prop={'size': fontsize_label})
plt.xlabel('your xlabel', fontsize=15, color='green')
plt.ylabel('your ylabel', fontsize=18, color='orange')

for t in plt.xticks()[1]:
    t.set_fontsize(fontsize_x)
    t.set_color('r')
for t in plt.yticks()[1]:
    t.set_fontsize(fontsize_y)
    t.set_color('b')

Если вы хотите использовать объект axes, он в основном такой же, с небольшими изменениями синтаксиса:

# using axis
fig, ax = plt.subplots()
ax.plot(x, y, label='data')
ax.legend(loc='best', prop={'size': fontsize_label})
ax.set_xlabel('your xlabel', fontsize=15, color='green')   #set_xlabel instead of xlabel
ax.set_ylabel('your ylabel', fontsize=18, color='orange')   #ibid


for t in ax.get_xticklabels():    #get_xticklabels will get you the label objects, same for y
    t.set_fontsize(fontsize_x)
    t.set_color('r')
for t in ax.get_yticklabels():
    t.set_fontsize(fontsize_y)
    t.set_color('b')

enter image description here

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