用Matplotlib调整图

时间:2019-05-13 15:17:07

标签: python python-3.x matplotlib

我在调整图表y轴上数字标签的字体大小时遇到​​一些问题。调整字体大小似乎只能调整图例框中的文本。

调整“轴”不起作用,因为我使用axes.ravel()来提供2x2的四个子图集。

  

“ axes.set_xlabel(fontsize ='large',fontweight ='bold')AttributeError:   'numpy.ndarray'对象没有属性'set_xlabel'“

#The part of the code that creates the subplots.

fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(40,20), squeeze=False, sharey=True)
axes = axes.ravel()

font = FontProperties()

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

plt.rc('font', **font)

#Then under here are the loops that create each subplot.

for each_subplot in range(0,4):

    axes.set_xlabel(fontsize='large', fontweight='bold')

#Selecting the input data goes here, but I left it out.

3 个答案:

答案 0 :(得分:2)

for each_subplot in range(0,4): axes[each_subplot].set_xlabel(fontsize='large', fontweight='bold') 本身是一个轴数组。所以你想做

axes

或更简单:

for each_subplot in range(0,4):
    axes[each_subplot].set_xlabel(fontsize='large', fontweight='bold')

答案 1 :(得分:1)

java-opt现在是一个ndarray,因此您需要从array中提取元素并在其上调用axes方法。试试这个。

set_xlabel()

答案 2 :(得分:1)

在这种情况下,我个人建议使用enumerate,它不仅使您可以访问各个轴对象,而且还可以访问可用于修改标签的索引。要展平axes,可以使用axes.ravel()axes.flatten()。另外,您可以直接在axes.flatten()中使用enumerate,如下所示。

fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(8,5), squeeze=False, sharey=True)

for index, ax in enumerate(axes.ravel()):
    ax.set_xlabel('X-label %s' %index, fontsize='large', fontweight='bold')
plt.tight_layout()    

enter image description here