1.1 认识图标常用的辅助元素
图表的辅助元素是指除根据数据绘制的图形之外的元素,常用的辅助元素包括坐标轴标题、图例、网格、参考线、参考区域、注释文本和表格,它们都可以对图形进行补充说明为了便于理解。
·坐标轴 :分为单坐标轴和双坐标轴,单坐标轴按不同的方向又可分为水平坐标轴(又称x轴)和垂直坐标轴(又称y轴)。
·标题 : 表示图表的说明性文本。
·图例 : 用于指出图表中各组图形采用的标识方式。
·网格 :从坐标轴刻度开始的、贯穿绘图区域的若干条线,用于作为估算图形所示值的标准。
·参考线 : 标记坐标轴上特殊值的一条直线。
·参考区域 : 标记坐标轴上特殊范围的一块区域。
·注释文本 :表示对图形的一些注释和说明。
·表格 : 用于强调比较难理解数据的表格。
坐标轴是由刻度标签、刻度线 ( 主刻度线和次刻度线 )、轴脊和坐标轴标签组成的。
1.2 设置坐标轴的标签、刻度范围和刻度标签
坐标轴对数据可视化效果有着直接的影响。坐标轴的刻度范围过大或过小、刻度标签过多或过少,都会导致图形显示的比例不够理想。
1、设置坐标轴的标签
matplotlib 提供了设置x 轴和y 轴标签的方式。
1.设置x 轴的标签
matplotlib 中可以直接使用 pyplot 模块的 xlabel()函数设置轴的标签,xlabel()函数的语法格式如下所示 :
xlabel(xlabel,fontdict=None,labelpad=None,**kwargs)
该函数各参数含义如下。
xlabel : 表示x 轴标签的文本
·fontdict : 表示控制标签文本样式的字典
·labelpad : 表示标签与坐标轴边框(包括刻度和刻度标签)的距离
此外,Axes 对象使用 set_xlabel()方法也可以设置x轴的标签
2.设置y轴的标签
matplotlib 中可以直接使用 pyplot 模块的 ylabel0 函数设置y轴的标签,ylabel0 函数的语法格式如下所示 :
ylabel(ylabel,fontdict=None,labelpad=None,**kwargs)
该函数的 ylabel 参数表示y 轴标签的文本,其余参数与 xlabel()函数的参数的含义相同此处不再赘述。此外,Axes 对象使用 set_ylabel()方法也可以设置y轴的标签。
2. 设置刻度范围和刻度标签
当绘制图表时,坐标轴的刻度范围和刻度标签都与数据的分布有着直接的联系,即坐轴的刻度范围取决于数据的最大值和最小值。在使用 matplotlib 绘图时若没有指定任何数x轴和轴的范围均为 0.05 ~ 1.05,刻度标签均为 [-0.2,0.0,0.2, 0.4,0.6,0.8,1.0,1.2];若定了x轴和,轴的数据,刻度范围和刻度标签会随着数据的变化而变化。matplotlib 提供了新设置坐标轴的刻度范围和刻度标签的方式。
1.3 添加标题和图例
1、添加标题
图表的标题代表图表名称,一般位于图表的顶部且与图表居中对齐,可以迅速地让读者理解图表要说明的内容。matplotlib 中可以直接使用 pyplot 模块的 title()函数添加图表标题。
2、添加图例
图例是一个列举各组图形数据标识方式的方框图,它由图例标识和图例项两个部分构成,其中图例标识是代表各组图形的图案:图例项是与图例标识对应的名称(说明文本 )。当mauplolib 绘制包含多组图形的图表时,可以在图表中添加图例,帮助用户明确每组图形代表
2.1用面向对象的方法为图表添加辅助元素
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
fig = plt.figure()
ax = fig.add_subplot(111)
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y1, y2 = np.sin(x), np.cos(x)
ax.plot(x, y1, x, y2)
ax.set_xlabel("x轴")
ax.set_ylabel("y轴")
ax.set_xlim(x.min()*1.5, x.max()*1.5)
ax.set_xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$'])
ax.set_title("正弦曲线和余弦曲线")
lines = ax.plot(x, y1, x, y2)
ax.legend(lines,['正弦','余弦'], shadow=True, fancybox=True)
plt.show()
运行代码,结果如图所示:
显示网格
ax.grid( axis='y', axis='x',linewidth=0.3)