我在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)不是我想要的。如何分别设置图形标题和轴标签的字体大小?


当前回答

在set_ylabel()之前放置right_ax

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

其他回答

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()

处理标签、标题等文本的函数接受与matplotlib.text.text相同的参数。对于字体大小,可以使用size/fontsize:

from matplotlib import pyplot as plt    

fig = plt.figure()
plt.plot(data)
fig.suptitle('test title', fontsize=20)
plt.xlabel('xlabel', fontsize=18)
plt.ylabel('ylabel', fontsize=16)
fig.savefig('test.jpg')

对于全局设置标题和标签大小,mpl.rcParams包含axes.titlesize和axes.labelsize。(从页面):

axes.titlesize      : large   # fontsize of the axes title
axes.labelsize      : medium  # fontsize of the x any y labels

(据我所知,没有办法分别设置x和y标签大小。)

我看到axes.titlesize不影响suptitle。我想,你需要手动设置。

您也可以通过rcParams字典全局执行此操作:

import matplotlib.pylab as pylab
params = {'legend.fontsize': 'x-large',
          'figure.figsize': (15, 5),
         'axes.labelsize': 'x-large',
         'axes.titlesize':'x-large',
         'xtick.labelsize':'x-large',
         'ytick.labelsize':'x-large'}
pylab.rcParams.update(params)

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

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。

根据官方指南,不再建议使用pylab。应该直接使用matplotlib.pyplot。

通过rcParams全局设置字体大小应使用

import matplotlib.pyplot as plt
plt.rcParams['axes.labelsize'] = 16
plt.rcParams['axes.titlesize'] = 16

# or

params = {'axes.labelsize': 16,
          'axes.titlesize': 16}
plt.rcParams.update(params)

# or

import matplotlib as mpl
mpl.rc('axes', labelsize=16, titlesize=16)

# or 

axes = {'labelsize': 16,
        'titlesize': 16}
mpl.rc('axes', **axes)

默认值可以使用

plt.rcParams.update(plt.rcParamsDefault)

您也可以通过在matplotlib配置目录下的stylelib目录中创建样式表来实现这一点(您可以从matplotlib.get_configdir()获取配置目录)

axes.labelsize: 16
axes.titlesize: 16

如果在/path/to/mpl_configdir/stylelib/mystyle.mplstyle中有一个样式表,则可以通过

plt.style.use('mystyle')

# or, for a single section

with plt.style.context('mystyle'):
    # ...

您还可以创建(或修改)共享格式的matplotlibc文件

axes.labelsize = 16
axes.titlesize = 16

根据您修改的matplotlibc文件,这些更改将仅用于当前工作目录、没有matplotlicc文件的所有工作目录,或没有matplodlibc文件且未指定其他matplotlidc文件的工作目录。有关详细信息,请参阅自定义matplotlib页面的本节。

可以通过plt.rcParams.keys()检索rcParams键的完整列表,但为了调整字体大小,可以使用(此处引用的斜体)

axes.labelsize-x和y标签的字体大小axes.titlesize-轴标题的字体大小figure.titlesize-图形标题的大小(figure.suptitle())xtick.labelsize-刻度标签的字体大小ytick.labelsize-记号标签的字体大小legend.fontsize-图例的字体大小(plt.legend(),图legend(()))legend.title_fontsize-图例标题的字体大小,“无”设置为与默认轴相同。有关用法示例,请参见此答案。

所有这些都接受字符串大小{'xx-small','x-small','small'、'small'、'small'、'medium'、'large'、'x-large','xxlarge'}或pt中的浮点数。字符串大小是相对于默认字体大小定义的,默认字体大小由

font.size-文本的默认字体大小,以pt为单位。10 pt为标准值

此外,可以通过以下方式指定权重(尽管仅在默认情况下显示)

font.weight-text.text使用的字体的默认粗细。接受{100、200、300、400、500、600、700、800、900}或“普通”(400)、“粗体”(700)、“较轻”和“较粗”(相对于当前粗细)。