Python 如何在Matplotlib中设置地物标题和轴标签的字体大小?

Python 如何在Matplotlib中设置地物标题和轴标签的字体大小?,python,matplotlib,Python,Matplotlib,我正在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['

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

处理诸如
标签
标题
等文本的函数。接受与相同的参数。对于字体大小,您可以使用
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')
对于全局设置
标题
标签
大小,包含
轴。标题大小
轴。标签大小
。(摘自页面):

(据我所知,无法分别设置
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)

如果您更习惯于使用
ax
对象进行打印,您可能会发现
ax.xaxis.label.set_size()
更容易记住,或者至少在ipython终端中使用选项卡更容易找到。它似乎需要一个重画操作后,才能看到效果。例如:

import matplotlib.pyplot as plt

# set up a plot with dummy data
fig, ax = plt.subplots()
x = [0, 1, 2]
y = [0, 3, 9]
ax.plot(x,y)

# title and labels, setting initial sizes
fig.suptitle('test title', fontsize=12)
ax.set_xlabel('xlabel', fontsize=10)
ax.set_ylabel('ylabel', fontsize='medium')   # relative to plt.rcParams['font.size']

# setting label sizes after creation
ax.xaxis.label.set_size(20)
plt.draw()

我不知道有什么类似的方法可以在创建suptitle后设置它的大小。

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

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

fontdict接受来自的所有Kwarg。

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

右边的ax
放在
设置标签()之前。

ax.right\u ax.set\u ylabel('AB scale')

根据,不再建议使用
pylab
<代码>matplotlib.pyplot应直接使用

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

导入matplotlib.pyplot作为plt
plt.rcParams['axes.labelsize']=16
plt.rcParams['axes.titlesize']=16
#或
params={'axes.labelsize':16,
“axes.titlesize”:16}
plt.rcParams.update(参数)
#或
将matplotlib导入为mpl
mpl.rc('轴',标签大小=16,标题大小=16)
#或
轴={'labelsize':16,
“标题大小”:16}
mpl.rc('轴',**轴)
可以使用恢复默认值

plt.rcParams.update(plt.rcParamsDefault)
您还可以通过在下的
stylelib
目录中创建一个(您可以从
matplotlib.get\u configdir()
获取配置目录)来完成此操作。样式表格式为

axes.labelsize:16
轴。标题大小:16
如果在
/path/to/mpl\u configdir/stylelib/mystyle.mplstyle
中有样式表,则可以通过

plt.style.use('mystyle'))
#或者,对于单个部分
使用plt.style.context('mystyle'):
# ...
您还可以创建(或修改)共享该格式的

axes.labelsize=16
axes.titlesize=16
根据修改的matplotlibrc文件,这些更改将仅用于当前工作目录、所有具有matplotlibrc文件的工作目录或所有具有matplotlibrc文件且未指定其他matplotlibrc文件的工作目录。有关详细信息,请参见自定义matplotlib页面的第页

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

  • 轴。标签大小
    -x和y标签的字体大小
  • axes.titlesize
    -轴标题的字体大小
  • figure.titlesize
    -图形标题的大小(
    figure.suptitle()
  • xtick.labelsize
    -勾号标签的字体大小
  • ytick.labelsize
    -勾号标签的字体大小
  • legend.fontsize
    -图例的fontsize(
    plt.legend()
    fig.legend()
  • legend.title_fontsize
    -fontsize对于图例标题,
    None
    设置为与默认轴相同。有关用法示例,请参见
它们都接受字符串大小
{'xx-small',x-small',small',small',medium',large',large',x-large',xxlarge'}
pt
中的
float
。字符串大小是相对于默认字体大小定义的,默认字体大小由

  • font.size
    -文本的默认字体大小,以pts表示。10 pt为标准值
此外,可以通过以下方式指定权重(尽管仅针对默认值)

  • font.weight
    -由
    text.text
    使用的字体的默认重量。接受
    {100、200、300、400、500、600、700、800、900}
    'normal'
    (400)、
    'bold'
    (700)、
    'lighter'
    'bold'
    (相对于当前重量)
7(最佳解决方案) 6(稍差的溶液)
从numpy导入*
M=数组([[3,2,3],[1,2,6]]
类(对象):
定义初始值(self,m):
self.m=m
def srednja(自我):
redovi=len(M)
stupci=len(M[0])
lista=[]
a=0
suma=0

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

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

ax.xaxis.set_tick_params(labelsize='small')
或者,要使y轴刻度标签变大:

ax.yaxis.set_tick_params(labelsize='large')
您还可以将
标签大小
作为浮点输入,或输入以下任意字符串选项:“xx小”、“x小”、“小”、“中”、“大”、“x大”或“xx大”。

谢谢!有没有去巴黎的路
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()
ax.xaxis.set_tick_params(labelsize='small')
ax.yaxis.set_tick_params(labelsize='large')