Python绘制茎叶图的示例代码
作者:微小冷
这篇文章主要为大家信息介绍了Python绘制茎叶图的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
简介
茎叶图从外观来看,更像是火柴,由基线、茎线、茎头三部分构成。最简单的示例如下
import numpy as np import matplotlib.pyplot as plt plt.stem(np.sin(np.arange(10))) plt.show()
参数
stem的完整参数如下
stem([locs,] heads, linefmt=None, markerfmt=None, basefmt=None, bottom=0, label=None, orientation='vertical', data=None)
其中
- locs和heads表示其x , y x,yx,y方向的值。如果只输入一组数值,则默认输入的是heads。
- linefmt, markerfmt, basefmt 均为字符串,分别用于定义茎线、茎头以及基线的格式。
- orientation 表示茎叶图方向,默认为’vertical’,若取值为’horizontal’,则茎叶图调转90°
- bottom 为基线的位置
- label 为图例中使用的标签
linefmt和basefmt字符串由两部分组成,分别用于设置茎线的颜色和类型,第一部分格式为Cx,表示色环中第x种颜色;第二部分可选’-', ‘–’, ‘-.’, ‘:’,表示线的虚实类型。当然,第一部分直接采取颜色缩写,比如r,g,b也是可以的。
markerfmt也是同样的格式,但用于调整茎头标记点的字符与线型有所差异。其具体可选值存放在Line2D中
from matplotlib.lines import Line2D from pprint import pprint pprint(Line2D.markers)
打印结果是一个字典,列表如下
0 | ‘tickleft’ | 1 | ‘tickright’ | 2 | ‘tickup’ |
3 | ‘tickdown’ | 4 | ‘caretleft’ | 5 | ‘caretright’ |
6 | ‘caretup’ | 7 | ‘caretdown’ | 8 | ‘caretleftbase’ |
9 | ‘caretrightbase’ | 10 | ‘caretupbase’ | 11 | ‘caretdownbase’ |
‘’ | ‘nothing’ | ’ ’ | ‘nothing’ | ‘*’ | ‘star’ |
‘+’ | ‘plus’ | ‘,’ | ‘pixel’ | ‘.’ | ‘point’ |
‘1’ | ‘tri_down’ | ‘2’ | ‘tri_up’ | ‘3’ | ‘tri_left’ |
‘4’ | ‘tri_right’ | ‘8’ | ‘octagon’ | ‘<’ | ‘triangle_left’ |
‘>’ | ‘triangle_right’ | ‘D’ | ‘diamond’ | ‘H’ | ‘hexagon2’ |
None’ | ‘nothing’ | ‘P’ | ‘plus_filled’ | ‘X’ | ‘x_filled’ |
‘^’ | ‘triangle_up’ | ‘_’ | ‘hline’ | ‘d’ | ‘thin_diamond’ |
‘h’ | ‘hexagon1’ | ‘none’ | ‘nothing’ | ‘o’ | ‘circle’ |
‘p’ | ‘pentagon’ | ‘s’ | ‘square’ | ‘v’ | ‘triangle_down’ |
‘x’ | ‘x’ | ’ | ’ | ‘vline’ |
演示
下面演示一下不同格式的效果
lf = ['C0-', 'C1--', 'C2-.', 'C3:'] mf = ['C40', 'r*', 'g8', 'bD'] xs = np.sin(np.arange(10)) fig = plt.figure() for i in range(4): ax = fig.add_subplot(2,2,i+1) ax.stem(xs, linefmt=lf[i], markerfmt=mf[i]) plt.title(f"linefmt={lf[i]}, markerfmt={mf[i]}") plt.show()
效果如下
到此这篇关于Python绘制茎叶图的示例代码的文章就介绍到这了,更多相关Python茎叶图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!