4.1 文本注解的展示样式
为了清楚地注释图表中的内容,我们会向图表中的指定位置添加文本注解,用以强调或解释需要重点显示的图形内容,从而使得图形可以更好地呈现数据中所蕴含的关键信息。因此,为了使得文本注解可视化效果更加理想,文本注解的展示样式就是需要重点关注的可视化内容。下面,我们就从文本框的样式和文本注释箭头的样式两方面,通过具体代码来阐述其实现方法和操作细节。
4.1.1 文本框的样式
为了使文本注释内容更加清晰和醒目,我们可以在文本注释内容的外面添加文本框。因此,文本框的样式就会直接影响文本注解的显示效果。下面,我们具体看看文本框都有哪些主要的展示样式。
1.代码实现
2.运行结果(见图4-1)
图4-1
3.代码精讲
(1)通过调用“plt.figure(1,figsize=(8,9),dpi=72)”语句,获得Figure实例fig。其中,参数figsize用于设置画布尺寸,参数dpi用于控制单位尺寸内的点数。
(2)变量fontsize用于存储文本的字体大小。
(3)向画布对象fig添加子区获得返回值ax,通过参数frameon控制坐标轴的轴脊(坐标轴上的刻度标签和刻度线的载体)的显示状态,参数xticks和yticks是Axes的属性。
(4)通过调用“patches.BoxStyle.get_styles()”语句,即调用类BoxStyle中的类方法get_styles(),获得的返回值是可以使用的文本框样式的字典,其中键是文本框样式的名字。
(5)使用for循环语句,向坐标轴内迭代添加带文本框的文本内容。实现文本框的重要参数是bbox。参数bbox接收字典作为参数值,字典的键boxstyle对应的键值name就是文本框样式的名称。参数transform的作用就是使用指定的坐标系统计算无指示注解的位置。换句话讲,“ax.transAxes”就是使用归一化到0~1之间的浮点数的数值控制文本在Axes坐标系统上的位置,例如,0和0表示坐标轴的左下角,1和1表示坐标轴的右上角。
4.内容补充
在Python 3.x 中,使用字典boxStyles的方法keys(),也就是通过“boxStyles.keys()”语句,获得的返回值是可迭代对象,而不是列表。在Python 3.x中,可以通过内置函数list()将可迭代对象转化成列表,也就是通过“list(boxStyles.keys())”语句,将可迭代对象“boxStyles.keys()”转化成列表boxStyleNames。
4.1.2 文本注释箭头的样式
我们向绘图区域中添加有指示的注解,通常是用箭头等图形作为注释点和注释内容的连接桥梁的,即用箭头作为注释点和注释内容点的连线。箭头的绘制和样式可以通过指定参数arrowprops的取值来实现。作为“连接桥梁”的箭头有很多种展现样式,我们通过具体代码来探索这些展现样式的实现方法。
1.代码实现
2.运行结果(见图4-2)
图4-2
3.代码精讲
(1)通过调用“plt.figure(1,figsize=(8,9),dpi=72)”语句,获得Figure实例fig。其中,参数figsize用于设置画布尺寸,参数dpi用于控制单位尺寸内的点数。
(2)变量fontsize用于存储文本的字体大小。
(3)向画布对象fig添加子区add_subplot()进而获得返回值ax,通过参数frameon控制坐标轴的框架的显示状态,即4条坐标轴上面的刻度标签和刻度线的载体(轴脊)的显示情况。
(4)通过调用“patches.ArrowStyle.get_styles()”语句,即调用类ArrowStyle中的类方法get_styles(),获得的返回值是可以应用的箭头样式的字典,其中键是箭头样式的名字。
(5)利用for循环,调用实例方法annotate()向坐标轴内迭代添加有指示的注解,注释点就是添加到坐标轴ax中的圆形补片p,注释内容就是箭头样式的名称,其中,参数arrowprops接收字典参数值。具体而言,字典中的键 arrowstyle 的键值是箭头样式的名称,箭头填充颜色及轮廓颜色分别通过键facecolor和edgecolor进行设定,键shrinkA用来控制箭头的起始端和注释内容的文本框的间隔距离,键shrinkB用来控制箭头的终止端和注释点补片p的轮廓线的间隔距离,参数patchB用来指定注释点补片名称,键connectionstyle可以设置连接风格。实现文本框的参数是bbox,它接收字典作为参数值,字典的键boxstyle对应的键值“round”就是文本框样式的名称,即圆角文本框;键fc和ec分别是键facecolor和edgecolor的简写形式,可以分别设置文本框的填充颜色和线条颜色。由此,我们可以知道,实例方法text()和annotate()都可以使用参数bbox设置文本框的样式。
4.内容补充
在Python 3.x 中,使用字典arrowStyles的方法keys(),也就是通过“arrowStyles.keys()”语句,获得的返回值是可迭代对象,而不是列表。在Python 3.x中,可以通过内置函数list()将可迭代对象转化成列表,也就是通过“list(arrowStyles.keys())”语句,将可迭代对象“arrowStyles.keys()”转化成列表arrowStyleNames。