Python绘制茎叶图:plt.stem

2024-01-08 10:23:46

文章目录

简介

茎叶图从外观来看,更像是火柴,由基线、茎线、茎头三部分构成。最简单的示例如下

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,y x,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()

效果如下

在这里插入图片描述

文章来源:https://blog.csdn.net/m0_37816922/article/details/135284433
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。