无法更改Python Mathplot的标签大小

时间:2019-01-22 03:16:59

标签: python plot

我正在使用Python中的mathplot库来说明一些数据,为了将其呈现给论文,我希望通过增加轴标签和刻度的大小来提高其可读性。

但是,我只能修改图例的文本大小,并且无论我为标签和刻度线更改文本大小的值有多大,它们都保持不变。

我已经尝试了在该网站上找到的以下解决方案,但似乎都没有用(使用标准导入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

如您所见,唯一实际更改的文本就是图例之一,所以我觉得它很奇怪,只影响了其中一个。

我已经尝试过此处提出的解决方案,但没有任何结果:

How to change the font size on a matplotlib plot

Why doesn't the matplotlib label 'fontsize' work?

Python: How to increase/reduce the fontsize of x and y tick labels?

更新:我尝试了用户Mstaino提出的解决方案,它可以更改刻度的标签大小:

enter image description here

现在,我只需要找到一种方法来更改轴标签的大小,因为到目前为止,我尝试过的任何解决方案都无法更改它们(如您在图像中所见)。

1 个答案:

答案 0 :(得分:1)

不确定这是否是“最有效”的方法,但是您可以使用plt.xticks()来访问刻度线,并逐个更改刻度线(使用for循环)。至于标签,只需传递prop={'size': your_size}

(编辑)对于标签,只需传递相应的**kwargsfontsizecolor

示例:

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