笔记
单击此处 下载完整的示例代码
文本属性和布局#
使用 Matplotlib 控制文本的属性及其布局。
matplotlib.text.Text
实例具有多种属性,可以通过 、 、 等的关键字参数set_title
进行set_xlabel
配置
text
。
财产 |
值类型 |
---|---|
α |
|
背景颜色 |
任何 matplotlib颜色 |
盒子 |
|
剪辑框 |
一个 matplotlib.transform.Bbox 实例 |
夹上 |
布尔 |
剪辑路径 |
|
颜色 |
任何 matplotlib颜色 |
家庭 |
[ |
字体属性 |
|
水平对齐或 ha |
[ |
标签 |
任何字符串 |
行间距 |
|
多对齐 |
[ |
名称或字体名称 |
字符串,例如 [ |
拣货员 |
[无|浮动|布尔|可调用] |
位置 |
(x, y) |
回转 |
[以度为单位的角度| |
大小或字体大小 |
[以点为单位的大小| 相对大小,例如 |
样式或字体样式 |
[ |
文本 |
字符串或任何可通过“%s”转换打印的内容 |
转换 |
|
变体 |
[ |
垂直对齐或 va |
[ |
可见的 |
布尔 |
重量或字体重量 |
[ |
X |
|
是的 |
|
佐德 |
任何数字 |
horizontalalignment
您可以使用对齐参数、verticalalignment
和
来布置文本
multialignment
。horizontalalignment
控制文本的 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。
参数 |
用法 |
---|---|
|
字体系列列表(安装在用户机器上)和/或. |
|
默认样式 ex |
|
默认变体 ex |
|
默认拉伸,前 |
|
默认重量。字符串或整数 |
|
默认字体大小(以磅为单位)。相对字体大小 ( |
Matplotlib 可以使用安装在用户计算机上的字体系列,即 Helvetica、Times 等。字体系列也可以使用通用系列别名(如 ( ))来指定。{'cursive', 'fantasy', 'monospace',
'sans', 'sans serif', 'sans-serif', 'serif'}
笔记
要访问可用字体的完整列表:
matplotlib.font_manager.get_font_names()
通用系列别名和实际字体系列(在默认 rcParams中提到)之间的映射由以下 rcParams 控制:
基于 CSS 的 generic-family 别名 |
带有映射的 rcParam |
---|---|
|
|
|
|
|
|
|
|
|
|
如果任何通用家族名称出现在 中'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
要控制每个艺术家使用的字体,请使用上面记录的name、fontname或 fontproperties关键字参数。
在 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
列出了所有支持中文的字体。