我正在使用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,我得到以下图表:
通过将大小更改为18,我得到以下图:
如您所见,唯一实际更改的文本就是图例之一,所以我觉得它很奇怪,只影响了其中一个。
我已经尝试过此处提出的解决方案,但没有任何结果:
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提出的解决方案,它可以更改刻度的标签大小:
现在,我只需要找到一种方法来更改轴标签的大小,因为到目前为止,我尝试过的任何解决方案都无法更改它们(如您在图像中所见)。
答案 0 :(得分:1)
不确定这是否是“最有效”的方法,但是您可以使用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')