添加数据标记
在 matplotlib 中,折线图的线条由数据标记及其之间的连线组成,且默认隐藏数据标记。数据标记一般指代表单个数据的圆点或其他符号等,用于强调数据点的位置,常见于折线图和散点图中。下面将介绍在折线图或散点图中添加数据标记的方法。
添加折线图或散点图的数据标记
matplotlib 中内置了许多数据标记,使用这些数据标记可以便捷地为折线图或散点图标注数据点。数据标记可以分为填充型标记和非填充型标记,这两种标记的取值、样式及说明分别如图 4-4 和图 4-5 所示。
使用 pyplot 的 plot() 或 scatter() 函数绘制折线图或散点图时,可以将标记的取值传递给marker 参数,从而为折线图或散点图添加数据标记。
例如,绘制一条带有星形标记的折线,代码如下:
除此之外,pyplot 还可以为以下参数传值以控制标记的属性:
· markeredgecolor 或 mec :表示标记的边框颜色。
· markeredgewidth 或 mew :表示标记的边框宽度。
· markerfacecolor 或 mfc :表示标记的填充颜色。
· markerfacecoloralt 或 mfcalt :表示标记备用的填充颜色。
· markersize 或 ms :表示标记的大小。
例如,为刚刚添加的星形标记设置大小和颜色,代码如下:
以上示例绘制的线条效果如图 4-6 所示。
多学一招:matplotlib 格式字符串
matplotlib 在绘制折线图时,可以使用字符串分别为线条指定颜色、线型和数据标记这 3 种形式,但每次都需要分别给参数 color、linestyle、marker 传值,使得编写的代码过于烦琐。为此,matplotlib 提供了由颜色、标记、线型构成的格式字符串。格式字符串是快速设置线条基本样式的缩写形式的字符串,语法格式如下所示:
以上格式的每个选项都是可选的,选项之间组合的顺序也是可变的,若未提供则会使用样式循环中的值。其中,颜色只能是字母缩写形式表示的颜色。
若格式字符串中只有颜色一个选项,可以使用十六进制、单词拼写等其他形式表示的颜色。
pyplot 的 plot() 函数的 fmt 参数可接收格式字符串,以便能同时为线条指定多种样式,但该参数不支持以 fmt 为关键字的形式传参,而支持以位置参数的形式传递。
例如,绘制带有圆形标记的品红色虚线,代码如下 :
实例3:标记不同产品各季度的销售额
已知某公司旗下共有 3 款明星产品 :产品 A、产品 B 和产品 C。为了解每款产品全年的销售额,公司对每款产品的年销售额进行了核算,核算之后的结果如表 4-5 所示。
根据表 4-5 的数据,将“季度”一列的数据作为 x 轴的刻度标签,将“产品 A”“产品 B”“产品 C” 三列的数据作 y 轴的数据,分别使用 plot() 函数绘制反映产品 A 、产品 B 和产品 C 各季度的销售额的折线图,并使用不同的线型、颜色、标记进行区分,具体代码如下。
运行程序,效果如图 4-7 所示。
图 4-7中,每条折线均使用不同样式的数据标记标注了数据的位置,其中蓝色折线使用菱形标注了产品 A 各季度的销售额;橙色折线使用正三角形标注了产品 B 各季度的销售额;绿色折线使用正方形标注了产品 C 各季度的销售额。由图 4-7 可知,产品 A 在各季度的销售额都高于另两个产品,产品 C 在各季度的销售额都低于另两个产品。