Pyplot 常见绘图方法

Zarah ·
更新时间:2024-09-21
· 737 次阅读

前言:Pyplot 是python中matplotlib一个强大的绘图工具,它是其内部一个简单的面向函数式的API,应付平时工作当中简单的绘图工作,其实也不能说其绘制的图比较简单,它也能应付很多复杂的图表,当然没有其另一个面向对象的API这么个性化,但是也可以应付大多数工作了,下图便是用Pyplot绘制出来的图.刚好最近在做机器学习方面的学习,对于模型的评估会用到绘图,这里就整理了一下常见的一些用法;
在这里插入图片描述

准备数据 # 导入必要的包 import numpy as np import matplotlib.pyplot as plt # 在0到2这个区间内均匀找出100个数 x = np.linspace(0.,2.,100) # x 中的每个元素取sin y = np.sin(x*np.pi) # 从标准正态分布中随机取100个数 y1 = np.random.randn(100) plot() 的使用——线型图 # 参数含义 x,y 分别为两轴的数据,ls:代表图中线的格式 c:线的颜色 lw:线宽度,label: 线的标签 plt.plot(x,y,ls="--",c='r',lw=2,label="test_line1") # 显示图 plt.show()

在这里插入图片描述
线条样式:

字符 描述
‘-’ 实线样式
‘–’ 短横线样式
‘-.’ 点划线样式
‘:’ 虚线样式
‘.’ 点标记
‘,’ 像素标记
‘o’ 圆标记
‘v’ 倒三角标记
‘^’ 正三角标记
‘<’ 左三角标记
‘>’ 右三角标记
‘1’ 下箭头标记
‘2’ 上箭头标记
‘3’ 左箭头标记
‘4’ 右箭头标记
‘s’ 正方形标记
‘p’ 五边形标记
‘*’ 星形标记
‘h’ 六边形标记 1
‘H’ 六边形标记 2
‘+’ 加号标记
‘x’ X 标记
‘D’ 菱形标记
‘d’ 窄菱形标记
‘|’ 竖直线标记
‘_’ 水平线标记

以下是颜色的缩写:

字符 颜色
‘b’ 蓝色
‘g’ 绿色
‘r’ 红色
‘c’ 青色
‘m’ 品红色
‘y’ 黄色
‘k’ 黑色
‘w’ 白色
scatter() 的使用——散点图 # 参数跟上类似 plt.scatter(x,y1,c="b",label="test_scatter1")

在这里插入图片描述

xlabel(),ylabel()设置xy轴的标签 # x轴的标签 plt.xlabel(xlabel="x-axis") # y轴的标签 plt.ylabel(ylabel="y-axis")

在这里插入图片描述

grid()——设置网格线 # linestyle:设置网格线的格式,':'虚线,'-'实线 color:网格线的颜色 linewidth:线条宽度 # 参数也可以用缩写 ls,c,lw , … plt.grid(linestyle=":",color="r",linewidth=1)

在这里插入图片描述

axvline(),axhline()——设置垂直水平参考线 # 设置垂直参考线 plt.axvline(x=0.5,ls="--",lw=1,c='b') # 设置水平参考线 plt.axhline(y=0.5,ls="--",lw=1,c='r')

在这里插入图片描述

axvapan(),axhspan()——设置垂直水平的参考区域 plt.plot(x,y,ls=":",c='r',lw=1,label="test_line1") # 设置垂直方向参考区域 xmin与xmax设置x轴方向的跨度,facecolor:填充的颜色, alpha:透明度 0~1 plt.axvspan(xmin=0.4,xmax=0.6,facecolor="r",alpha=0.1) # 设置水平防线参考区域 参数参考垂直方向的解释 plt.axhspan(ymin=0.3,ymax=0.6,facecolor="b",alpha=0.1)

在这里插入图片描述

annotate()——带指向性注释 plt.plot(x,y,ls=":",c='r',lw=1,label="test_line1") # 参数含义: # s: 注释的文本 # xy:需要注释图中的哪个坐标 # xytext:文本显示在图中的位置 # weight:文字的样式,这里是加粗 # color:文字的颜色 # arrowprops箭头的样式,以一个词典方式传入参数 plt.annotate(s="max", xy=(0.5,1.0), xytext=(0.75,0.8), weight="bold", color="b", arrowprops={"arrowstyle":"->","connectionstyle":"arc3","color":"b"})

在这里插入图片描述

text()——非指向性注释 plt.plot(x,y,ls=":",c='r',lw=1,label="test_line1") # 参数意义类似 x,y 表示注释文本在图像中的位置 plt.text(s="y=sin(x)",x=1.0,y=0.0,weight="bold",color="b")

在这里插入图片描述

title()——添加标题 plt.title("This is title")

在这里插入图片描述

legend()——添加图例 plt.plot(x,y,ls=":",c='r',lw=1,label="test_line1") # 显示图例 upper:上 lower:下 center:居中 right:右 left:左 空格隔开进行组合 plt.legend(loc="lower left")

在这里插入图片描述

bar()——柱状图 # 准备数据 x = np.arange(0,9) y = np.random.randint(0,10,9) # x 轴上的标签 labels = [chr(i+65) for i in range(9)] # align:对齐方式,color:颜色 tick_label:x属性的标签 hatch:柱上的遮盖样式 plt.bar(x,y,align="center",color="c",tick_label=labels,hatch="/")

在这里插入图片描述

barh()——条形图 # 参数格式和柱状图一样 plt.barh(x,y,align="center",color="c",tick_label=labels,hatch="/")

在这里插入图片描述

hist()——直方图 x = np.random.randint(1,9,100) bins = np.arange(1,10,1) # x:数据,bins:x轴上所有的分支,histtype:直方图的类型 plt.hist(x,bins=bins,histtype="bar",color="g",rwidth=1,alpha=0.6)

在这里插入图片描述

pie()——饼状图 labels = [chr(i+65) for i in range(6)] soldNums = np.random.randint(1,100,6) # 各个部分的颜色 colors = ["r","g","b"]*2 # autopct:显示百分比的格式 plt.pie(soldNums,colors=colors,labels=labels,startangle=60,autopct="%3.1f%%")

在这里插入图片描述

polar()——极线图 # 每个数据所在度数位置 弧度制 theta = np.linspace(0,2*np.pi,12,endpoint=False) # 每个位置的值大小 data = 50 * np.random.random(12) # c:折线颜色,marker:顶点样式,lw:折线宽度,mfc:顶点颜色,ms:顶点大小 plt.polar(theta,data,c="#FFAAFF",lw=2,marker="o",mfc="b",ms=5)

在这里插入图片描述

scatter()——气泡图 x = np.random.rand(100) y = np.random.rand(100) c = np.random.rand(100) #s:气泡的大小,marker:气泡样式,cmap:要将浮点数映射的颜色表 plt.scatter(x,y,s=np.power(x*10+5*y,3),c=c,marker="o",cmap=mpl.cm.RdYlBu)

在这里插入图片描述

stem()——棉棒图 x = np.linspace(0,7,20) y = np.random.randn(20) # linefmt:竖直方向线条格式 # markerfmt:顶点的格式 # basefmt:水平方向线条格式 plt.stem(x,y,linefmt="--",markerfmt="o",basefmt="-")

在这里插入图片描述

boxplot()——箱线图 x = np.random.randn(1000) plt.boxplot(x) plt.grid(axis="y",ls=":",color="gray",alpha=0.3)

在这里插入图片描述

errorbar()——误差棒图 x = np.linspace(0.1,0.6,6) y = np.exp(x) # fmt:样式 # yerr:y轴方向的误差计算方法 # xerr:x轴方向的误差计算方法 plt.errorbar(x,y,fmt="ro:",yerr=0.1,xerr=0.02) # 限制x轴的上下限 plt.xlim(0,0.7)

在这里插入图片描述

完整代码 from matplotlib import cm as cm x = np.linspace(0.5,3.5,100) y = np.sin(x) y1= np.random.randn(100) plt.scatter(x,y1,c="0.25",label="scatter figure") plt.plot(x,y,ls="--",lw=2,label="plot figure") for spine in plt.gca().spines.keys(): if spine == "top" or spine == "right": plt.gca().spines[spine].set_color("none") plt.gca().xaxis.set_ticks_position("bottom") plt.gca().yaxis.set_ticks_position("left") plt.xlim(0.0,4.0) plt.ylim(-3.0,3.0) plt.ylabel("y_axis") plt.xlabel("x_axis") plt.grid(True,ls=":",color="r") plt.axhline(y=0.0,c="r",ls="--",lw=2) plt.axvspan(xmin=1.0,xmax=2.0,facecolor="y",alpha=0.3) plt.annotate("maximum",xy=(np.pi/2,1.0), xytext=((np.pi/2)+0.15,1.5),weight="bold",color="r", arrowprops={"arrowstyle":"->","connectionstyle":"arc3","color":"b"}) plt.annotate("spines",xy=(0.75,-3), xytext=(0.35,-2.25),weight="bold",color="b", arrowprops={"arrowstyle":"->","connectionstyle":"arc3","color":"b"}) plt.annotate("",xy=(0,-2.78), xytext=(0.4,-2.32), arrowprops={"arrowstyle":"->","connectionstyle":"arc3","color":"b"}) plt.annotate("",xy=(3.5,-2.98), xytext=(3.6,-2.70), arrowprops={"arrowstyle":"->","connectionstyle":"arc3","color":"b"}) plt.text(3.6,-2.70,"'|' is tickline",weight="bold",color="b") plt.text(3.6,-2.95,"3.5 is ticklabel",weight="bold",color="b") plt.title("pyplot show test") plt.legend()
作者:尼克不可



方法 pyplot

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章