我在Matplotlib中创建一个图形,如下所示:

from matplotlib import pyplot as plt

fig = plt.figure()
plt.plot(data)
fig.suptitle('test title')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
fig.savefig('test.jpg')

我想为图形标题和轴标签指定字体大小。我需要这三种字体大小都不同,所以设置全局字体大小(mpl.rcParams['font.size']=x)不是我想要的。如何分别设置图形标题和轴标签的字体大小?


当前回答

如果没有显式创建地物和轴对象,则可以在使用fontdict参数创建标题时设置标题字体大小。

使用fontsize参数创建x和y标签时,可以分别设置x和y标记字体大小。

例如:

plt.title('Car Prices are Increasing', fontdict={'fontsize':20})
plt.xlabel('Year', fontsize=18)
plt.ylabel('Price', fontsize=16)

也适用于海鸟和熊猫绘图(当Matplotlib是后端时)!

其他回答

7(最佳解决方案)

 from numpy import*
 import matplotlib.pyplot as plt
 X = linspace(-pi, pi, 1000)

class Crtaj:

    def nacrtaj(self,x,y):
         self.x=x
         self.y=y
         return plt.plot (x,y,"om")

def oznaci(self):
    return plt.xlabel("x-os"), plt.ylabel("y-os"), plt.grid(b=True)

6(稍差的解决方案)

from numpy import*
M = array([[3,2,3],[1,2,6]])
class AriSred(object):
    def __init__(self,m):
    self.m=m
    
def srednja(self):
    redovi = len(M)
    stupci = len (M[0])
    lista=[]
    a=0
    suma=0
    while a<stupci:
        for i in range (0,redovi):
            suma=suma+ M[i,a]
        lista.append(suma)
        a=a+1
        suma=0
    b=array(lista) 
    b=b/redovi
    return b



OBJ = AriSred(M)
sr = OBJ.srednja()

在set_ylabel()之前放置right_ax

ax.right_ax.set_ylabel('AB刻度')

更改字体大小的另一种解决方案是更改填充。Python保存PNG时,可以使用打开的对话框更改布局。轴之间的间距,如果您愿意,可以在这个阶段更改填充。

为了只修改标题的字体(而不是轴的字体),我使用了以下方法:

import matplotlib.pyplot as plt
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.set_title('My Title', fontdict={'fontsize': 8, 'fontweight': 'medium'})

fontdict接受matplotlib.text.text中的所有kwarg。

其他人提供了如何更改标题大小的答案,但对于轴刻度标签大小,也可以使用set_tick_params方法。

例如,要使x轴刻度标签尺寸较小:

ax.xaxis.set_tick_params(labelsize='small')

或者,要使y轴刻度标签变大:

ax.yaxis.set_tick_params(labelsize='large')

您还可以将标签大小输入为浮点数或以下任何字符串选项:“xx小”、“x-small”、“small”或“medium”、“large”、“x-large”或“xx大”。