进行了一段时间的直方图学习之后,发现python的matplo居然还支持画垂线标记图,赶紧把它记录下来。
直方图绘制教程见下述链接:
【a】直方图绘制基础教程:python画图|直方图绘制教程-CSDN博客
【b】 直方图绘制进阶教程:python画图|直方图绘制教程进阶-CSDN博客
【c】 堆叠直方图绘制教程:python画图|堆叠直方图绘制-CSDN博客
【d】并列直方图绘制教程: python画图|并列直方图绘制-CSDN博客
【e】 水平直方图绘制教程:python画图|水平直方图绘制-CSDN博客
【1】官网教程
直接进入官网,点击下方链接直达:
进入官网以后,我们会看到Stem Plot标记,并且看到一行解释:
stem plots vertical lines from a baseline to the y-coordinate and places a marker at the tip.
stem 可以从基线(x坐标轴)画一条平行于y轴的直线到达目标点,并且给目标点做个突出标记。
然后把代码注释一下:
import matplotlib.pyplot as plt #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算
x = np.linspace(0.1, 2 * np.pi, 41) #划分自变量的点,范围[0,1,2pi)
y = np.exp(np.sin(x)) #设置因变量
plt.stem(x, y) #绘制垂线标记图
plt.show() #输出图形
输出图形为:
图1
由图1可见,画出了一系列垂线,垂线顶端做了圆点标记。
【2】stem属性修改
在官网打开stem,可点击下方链接直达:
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.stem.html#matplotlib.pyplot.stem
会发现stem其实有大量属性可以可以设定:
matplotlib.pyplot.stem(*args, linefmt=None, markerfmt=None, basefmt=None, bottom=0, label=None, orientation='vertical', data=None)
这里的linefmt是线型显示的意思,markerfmt是顶端标记显示的意思,basefmt是基线显示的意思(可以理解为就是x轴),bottom是垂线起始的Y轴坐标值,label是标签,orientation是方向(存在沿着水平方向画垂线的机会)。data为可选输入,无需特别关注。
【2.1】改写bottom
bottom指定了垂线起始的位置,我们尝试将其分别设置为0.5和1.5,改后代码如下(每次输出只选择其中一个):
plt.stem(x, y,bottom=0.5) #绘制垂线标记图plt.stem(x, y,bottom=1.5) #绘制垂线标记图
图2
图3
由图2和图3可见,起始线从y=0.5变化到y=1.5。
【2.2】改写orientation
orientation指定了垂线起始的方向,我们尝试将其分别设置为水平和竖直,改后代码如下:
plt.subplot(1,2,1) #绘制左图 plt.stem(x, y,bottom=1.5,orientation='vertical') #绘制垂线标记图,自变量在x轴 plt.subplot(1,2,2)#绘制右图 plt.stem(x, y,bottom=1.5,orientation='horizontal') #绘制垂线标记图,自变量在y轴
输出结果为:
图4
由图4可见,stem实现了对自变量在x轴和y轴的垂线划分和顶端标记。
【2.3】增加垂线密度
尝试把x = np.linspace(0.1, 2 * np.pi, 41)加密,把41更换为101,改后输出如下:
图5
由图5可见,垂线已经被加密。
【3】总结
本文学习了使用stem()画垂线标记教程,并尝试了改变垂线起始点、修改自变量方向和增高垂线密度等操作。