目录
2.3. xlabel和ylabel - 子图的x,y轴标签
2.4. title和suptitle - 子图和画布的标题
3.2 Tick Locators and Formatters
3.2.1 Tick Formatters(设置标签的格式)
3.2.3 补充:日期型刻度(formatter和locator的结合使用)
5.1请尝试使用两种方式模仿画出下面的图表(重点是柱状图上的标签),本文学习的text方法和matplotlib自带的柱状图标签方法bar_label
一、前言
第四回的内容主要是介绍figure和ax上的文字方法。
一个没有文字注释的图不是一个好图。-----沃自基朔德
二、 Figure和Axes上的文本
2.1. 文本API示例
pyplot API |
OO API |
description |
---|---|---|
|
|
在子图axes的任意位置添加文本 |
|
|
在子图axes的任意位置添加注解,包含指向性的箭头 |
|
|
为子图axes添加x轴标签 |
|
|
为子图axes添加y轴标签 |
|
|
为子图axes添加标题 |
|
|
在画布figure的任意位置添加文本 |
|
|
为画布figure添加标题 |
上面的命令是介绍了通过pyplot API和objected-oriented API分别创建文本的方式。
OO方式是面向对象的,可以对指定ax进行添加文本的操作,pyplot 只能对单个对象进行操作。
下面的代码是综合性的代码,看懂下面的代码就算掌握入门了。
fig = plt.figure()
ax = fig.add_subplot()
# 分别为figure和ax设置标题,注意两者的位置是不同的
fig.suptitle('bold figure suptitle', fontsize=14, fontweight='bold')
ax.set_title('axes title')
# 设置x和y轴标签
ax.set_xlabel('xlabel')
ax.set_ylabel('ylabel')
# 设置x和y轴显示范围均为0到10
ax.axis([0, 10, 0, 10])
# 在子图上添加文本
ax.text(3, 8, 'boxed italics text in data coords', style='italic',
bbox={'facecolor': 'red', 'alpha': 0.5, 'pad': 10})
# 在画布上添加文本,一般在子图上添加文本是更常见的操作,这种方法很少用
fig.text(0.4,0.8,'This is text for figure')
ax.plot([2], [1], 'o')
# 添加注解
ax.annotate('annotate', xy=(2, 1), xytext=(3, 4),
arrowprops=dict(facecolor='black', shrink=0.05));
2.2. text - 子图上的文本
text的调用方式为
Axes.text(x, y, s, fontdict=None, **kwargs)
参数说明:
-
x
,y
为文本出现的位置,默认状态下即为当前坐标系下的坐标值, s
为文本的内容,fontdict
是可选参数,用于覆盖默认的文本属性,**kwargs
为关键字参数,也可以用于传入文本样式参数
重点解释下fontdict和**kwargs参数,这两种方式都可以用于调整呈现的文本样式,最终效果是一样的,不仅text方法,其他文本方法如set_xlabel,set_title等同样适用这两种方式修改样式。通过一个例子演示这两种方法是如何使用的。
fig = plt.figure(figsize=(10,3))
axes = fig.subplots(1,2)
# 使用关键字参数修改文本样式
axes[0].text(0.3, 0.8, 'modify by **kwargs', style='italic',
bbox={'facecolor': 'red', 'alpha': 0.5, 'pad': 10});
# 使用fontdict参数修改文本样式
font = {'bbox':{'facecolor': 'red', 'alpha': 0.5, 'pad': 10}, 'style':'italic'}
axes[1].text(0.3, 0.8, 'modify by fontdict', fontdict=font);
matplotlib中所有支持的样式参数请参考官网文档说明,大多数时候需要用到的时候再查询即可。
下表列举了一些常用的参数供参考。
Property |
Description |
---|---|
|
float or None 透明度,越接近0越透明,越接近1越不透明 |
|
color 文本的背景颜色 |
|
dict with properties for patches.FancyBboxPatch 用来设置text周围的box外框 |
|
color 字体的颜色 |
|
{FONTNAME, 'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'} 字体的类型 |
|
float or {'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'} 字体大小 |
|
{'normal', 'italic', 'oblique'} 字体的样式是否倾斜等 |
|
{a numeric value in range 0-1000, 'u |