文本属性和布局#

使用 Matplotlib 控制文本的属性及其布局。

matplotlib.text.Text实例具有多种属性,可以通过 、 、 等的关键字参数set_title进行set_xlabel配置 text

财产

值类型

α

float

背景颜色

任何 matplotlib颜色

盒子

Rectangleprop dict plus key 'pad',它是一个点数

剪辑框

一个 matplotlib.transform.Bbox 实例

夹上

布尔

剪辑路径

一个Path实例和一个Transform实例,一个Patch

颜色

任何 matplotlib颜色

家庭

[ 'serif'| 'sans-serif'| 'cursive'| 'fantasy'| 'monospace']

字体属性

FontProperties

水平对齐或 ha

[ 'center'| 'right'| 'left']

标签

任何字符串

行间距

float

多对齐

[ 'left'| 'right'| 'center']

名称或字体名称

字符串,例如 [ 'Sans'| 'Courier'| 'Helvetica'...]

拣货员

[无|浮动|布尔|可调用]

位置

(x, y)

回转

[以度为单位的角度| 'vertical'| 'horizontal']

大小或字体大小

[以点为单位的大小| 相对大小,例如'smaller', 'x-large']

样式或字体样式

[ 'normal'| 'italic'| 'oblique']

文本

字符串或任何可通过“%s”转换打印的内容

转换

Transform子类

变体

[ 'normal'| 'small-caps']

垂直对齐或 va

[ 'center'| 'top'| 'bottom'| 'baseline']

可见的

布尔

重量或字体重量

[ 'normal'| 'bold'| 'heavy'| 'light'| 'ultrabold'| 'ultralight']

X

float

是的

float

佐德

任何数字

horizontalalignment您可以使用对齐参数、verticalalignment和 来布置文本 multialignmenthorizontalalignment控制文本的 x 位置参数是否指示文本边界框的左侧、中心或右侧。verticalalignment控制文本的 y 位置参数是否指示文本边界框的底部、中心或顶部。multialignment,仅对于换行符分隔的字符串,控制不同的行是左对齐、居中还是右对齐。这是一个使用该 text()命令显示各种对齐可能性的示例。在transform=ax.transAxes整个代码中使用 表示坐标是相对于坐标轴边界框给出的,其中 (0, 0) 是坐标轴的左下角, (1, 1) 是右上角的坐标。

import matplotlib.pyplot as plt
import matplotlib.patches as patches

# build a rectangle in axes coords
left, width = .25, .5
bottom, height = .25, .5
right = left + width
top = bottom + height

fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1])

# axes coordinates: (0, 0) is bottom left and (1, 1) is upper right
p = patches.Rectangle(
    (left, bottom), width, height,
    fill=False, transform=ax.transAxes, clip_on=False
    )

ax.add_patch(p)

ax.text(left, bottom, 'left top',
        horizontalalignment='left',
        verticalalignment='top',
        transform=ax.transAxes)

ax.text(left, bottom, 'left bottom',
        horizontalalignment='left',
        verticalalignment='bottom',
        transform=ax.transAxes)

ax.text(right, top, 'right bottom',
        horizontalalignment='right',
        verticalalignment='bottom',
        transform=ax.transAxes)

ax.text(right, top, 'right top',
        horizontalalignment='right',
        verticalalignment='top',
        transform=ax.transAxes)

ax.text(right, bottom, 'center top',
        horizontalalignment='center',
        verticalalignment='top',
        transform=ax.transAxes)

ax.text(left, 0.5*(bottom+top), 'right center',
        horizontalalignment='right',
        verticalalignment='center',
        rotation='vertical',
        transform=ax.transAxes)

ax.text(left, 0.5*(bottom+top), 'left center',
        horizontalalignment='left',
        verticalalignment='center',
        rotation='vertical',
        transform=ax.transAxes)

ax.text(0.5*(left+right), 0.5*(bottom+top), 'middle',
        horizontalalignment='center',
        verticalalignment='center',
        fontsize=20, color='red',
        transform=ax.transAxes)

ax.text(right, 0.5*(bottom+top), 'centered',
        horizontalalignment='center',
        verticalalignment='center',
        rotation='vertical',
        transform=ax.transAxes)

ax.text(left, top, 'rotated\nwith newlines',
        horizontalalignment='center',
        verticalalignment='center',
        rotation=45,
        transform=ax.transAxes)

ax.set_axis_off()
plt.show()
文字道具

默认字体#

基本默认字体由一组 rcParams 控制。要设置数学表达式的字体,请使用以mathtext (参见mathtext ) 开头的 rcParams。

参数

用法

'font.family'

字体系列列表(安装在用户机器上)和/或.{'cursive', 'fantasy', 'monospace', 'sans', 'sans serif', 'sans-serif', 'serif'}

'font.style'

默认样式 ex 'normal', 'italic'

'font.variant'

默认变体 ex 'normal''small-caps' 未经测试)

'font.stretch'

默认拉伸,前'normal''condensed' (不完整)

'font.weight'

默认重量。字符串或整数

'font.size'

默认字体大小(以磅为单位)。相对字体大小 ( 'large', 'x-small') 是根据这个大小计算的。

Matplotlib 可以使用安装在用户计算机上的字体系列,即 Helvetica、Times 等。字体系列也可以使用通用系列别名(如 ( ))来指定。{'cursive', 'fantasy', 'monospace', 'sans', 'sans serif', 'sans-serif', 'serif'}

笔记

要访问可用字体的完整列表:

matplotlib.font_manager.get_font_names()

通用系列别名和实际字体系列(在默认 rcParams中提到)之间的映射由以下 rcParams 控制:

基于 CSS 的 generic-family 别名

带有映射的 rcParam

'serif'

'font.serif'

'monospace'

'font.monospace'

'fantasy'

'font.fantasy'

'cursive'

'font.cursive'

{'sans', 'sans serif', 'sans-serif'}

'font.sans-serif'

如果任何通用家族名称出现在 中'font.family',我们将用相应 rcParam 映射中的所有条目替换该条目。例如:

matplotlib.rcParams['font.family'] = ['Family1', 'serif', 'Family2']
matplotlib.rcParams['font.serif'] = ['SerifFamily1', 'SerifFamily2']

# This is effectively translated to:
matplotlib.rcParams['font.family'] = ['Family1', 'SerifFamily1', 'SerifFamily2', 'Family2']

带有非拉丁字形的文本#

从 v2.0 开始,默认字体DejaVu 包含许多西方字母的字形,但不包含其他脚本,例如中文、韩文或日文。

要将默认字体设置为支持所需代码点的字体,请将字体名称添加到'font.family'(推荐)或所需的别名列表中。

# first method
matplotlib.rcParams['font.family'] = ['Source Han Sans TW', 'sans-serif']

# second method
matplotlib.rcParams['font.family'] = ['sans-serif']
matplotlib.rcParams['sans-serif'] = ['Source Han Sans TW', ...]

通用系列别名列表包含与 Matplotlib 一起提供的字体(因此它们有 100% 的机会被发现),或者在大多数系统中存在的可能性非常高的字体。

设置自定义字体系列时的一个好习惯是在不得已的情况下将通用系列附加到字体系列列表中。

您也可以在.matplotlibrc文件中设置它:

font.family: Source Han Sans TW, Arial, sans-serif

要控制每个艺术家使用的字体,请使用上面记录的namefontnamefontproperties关键字参数。

在 linux 上,fc-list可以成为发现字体名称的有用工具;例如

$ fc-list :lang=zh family
Noto to Sans Mono CJK TC,Noto Sans Mono CJK TC Bold
Noto Sans CJK TC,Noto Sans CJK TC Medium
Noto Sans CJK TC,Noto Sans CJK TC DemiLight
Noto Sans CJK KR,Noto Sans CJK KR Black
Noto Sans CJK TC,Noto Sans CJK TC Black
Noto Sans Mono CJK TC,Noto Sans Mono CJK TC Regular
Noto Sans CJK SC,Noto Sans CJK SC Light

列出了所有支持中文的字体。

由 Sphinx-Gallery 生成的画廊