目录
序
简介
组成元素
plot()--展现变量的变化趋势
设置坐标轴样式(label,ticks,lim等的设置)
plt.grid()--设置网格
绘制参考线与参考域(axvline()与axspan()函数)
plt.text()--标记坐标点
plt.legend()--绘制图例
plt.title()--设置标题
plt.annotate()--添加图形内容细节的指向型注释文本
plt.savefig()与plt.show()--保存与显示图像
完整代码
写这篇文章时已经学matplotlib2个多月了,期间遇到好多困难,因此决定写下这篇文章帮助那些初学matplotlib的人。入门一和二对于平常使用python统计数据已经够用了,不过如果想要进一步深入理解,可以看下入门三。
matplotlib是python的一个库,内部储存了大量的函数用于绘制图像,通常会与pandas和numpy库一起使用,平常我们通常只是用里面的pyplot模块。通过pip3 install matplotlib即可下载。
首先先引入库
import matplotlib.pyplot as plt
import numpy as np
#下面两条语句根据电脑系统,选取一条,引入中文字体,防止绘图时输入中文无法出现字体
plt.rcParams["font.sans-serif"]=["Heiti TC"]#mac系统
plt.rcParams["font.sans-serif"]=["SimHei"]#windows系统
plt.rcParams["axes.unicode_minus"]=False#使坐标轴上的负坐标能正常出现
plt.figure(figsize=(6,6))#创建6*6大小的窗口
x=np.linspace(start,end,num,endpoint)
y=np.sin(x)
plt.plot(x,y,ls="-",lw=2,label="y=sin(x)",c="c",alpha=0.9)
首先介绍一下numpy里的linspace(),这里的参数start,end,num,endpoint表示若endpoint=True(默认为True)在区间[start,end]均匀选取num个数据;反之,若endpoint为False,则区间变为[start,end)。
plt.plot()内的参数
x:x坐标
y:y坐标
ls:也可写成linestyle,表示函数的表示形式常见的有":" 、"-." 、"-" 、"--"、""
lw:也可写成linewidth,表示的是线条的宽度
label:直线的图例,通常需要在使用plt.plot()后使用plt.legend()使图例加载出来
c:为color的的省写,表示颜色
marker:坐标点的形状常见的有"o"、"*"
alpha:控制颜色透明度0~1
而当ls="",marker="o"时为散点图
数据够多就能化直为曲
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.xticks(list1,list2,rotation=45,fontsize=12)
plt.yticks(fontsize=12)
plt.xlim(0,np.pi*2)
plt.ylim(-1.5,1.5)
若无list1 和list2
plt.xlable(),和plt.ylabel(),均为为x与y轴添加轴标题
plt.xticks()和plt.yticks()中:
rotation:用于设置参数的旋转,可不使用
fontsize:设置坐标轴刻度上字体大小,可不使用
list1:刻度上只显示list1中的值,可不使用
list2:将list1中的值化为list2,可不使用,但使用list2必须使用list1否则,坐标轴可能找不到这些数据例如中文...
plt.xlim(a,b)与plt.ylim(a,b)用于设置x轴y轴显示范围在a到b
#r"$内容$"可以将一些符号用印刷体打出,如若要打出,一般情况下会出现方框,但用这条语句,可以顺利打印出来
如下方示例代码
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r"-$\pi$",r"$-\pi/2$",0,r"$\pi/2$",r"$\pi$"],fontsize=10)
plt.yticks(fontsize=12)
plt.xlim(0,np.pi*2)
plt.ylim(-1.5,1.5)
plt.grid(axis="y",ls=":",lw=2,c="c",alpha=0.8)
axis:表示只表示y轴,如果不填该参数,默认x,y轴都显示
ls:也可写成linestyle,表示函数的表示形式常见的有":" "-." "-" "--"
lw:也可写成linewidth,表示的是线条的宽度
c:为color的的省写,表示颜色
alpha:控制颜色透明度0~1
plt.axvline(x=np.pi,c="black",ls="-",lw=2)
plt.axhline(y=0.0,c="black",lw=2,ls="-")
plt.axvline():表示绘制一条垂直(vertical)于x轴的宽度为2的连续黑直线也就是x=(代码中).
plt.axhline():表示绘制一条垂直(horizon)于x轴的宽度为2的连续黑直线也就是y=0(代码中).
plt.axvspan(xmin=np.pi/2,xmax=np.pi/2*3,facecolor="gray",alpha=0.4)
plt.axhspan(ymin=-1,ymax=1,facecolor="rosybrown",alpha=0.4)
同理,axspan()表示绘制垂直于x轴的带状领域,axspan()表示绘制垂直于y轴的领域。
facecolor:为领域颜色,可简写为fc
alpha:控制颜色透明度0~1
#标记少量数据
plt.text(x,y,string,c,alpha,fontsize)
#标记大量数据(通常用作标记柱状图数据)
for a,b in zip(x,y):
plt.text(a,b,b,c,alpha,fontsize,ha,va)
string为显示的内容如图中就为
plt.text(np.pi,0,"(pi,0)",c="black",alpha=0.7,fontsize=12)
在第二组代码中,xy为数据坐标,ha:为水平位置,一般设置为"center"比较美观,va:为垂直数据,一般显示为:":bottom"(最好在plt.bar()(绘制柱状图)后使用)
plt.legend()当你发现其它函数的label填写后却没有显示图例,往往是漏了legend()函数
其内有一个参数控制图例位置
以下参数均可不使用
plt.legend(loc,edgecolor,frameon,facecolor)
loc:图例位置由俩部分组成upper或lower和left或right组合而成如:"upper right"
edgecolor:设置图例边框颜色
frameon:设置图例是否有边框,默认True
facecolor:图例背景颜色
plt.title(string)
产生string标题
plt.annotate("maximum",
xy=(np.pi/2,1),
xytext=(np.pi/2-1.4,1.1),
color="dodgerblue",
alpha=0.7,
weight="bold",
fontsize=12,
arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="b"))
xy:箭头指向的坐标点
xytext:文本内容出现的位置
weight:注释文本字体粗细风格
arrowprops:指示被注释内容箭头的字典
plt.savefig(path)
plt.show()显示图像
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["font.sans-serif"]=["Heiti TC"]
plt.rcParams["axes.unicode_minus"]=False
x=np.linspace(-np.pi,np.pi,1000)
y=np.sin(x)
plt.plot(x,y,linestyle="-",lw=2,label="y=sin(x)",alpha=0.2)
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.xticks(rotation=45,fontsize=12)
plt.yticks(fontsize=12)
plt.xlim(-np.pi*2,np.pi*2)
plt.ylim(-1.5,1.5)
plt.grid(axis="y",ls=":",lw=2,c="c",alpha=0.7)
plt.axvline(x=0.0,c="black",ls="-",lw=2)
plt.axhline(y=0.0,c="black",lw=2,ls="-")
plt.axvspan(xmin=-9,xmax=9,fc="gray",alpha=0.4)
#plt.axhspan(ymin=-1,ymax=1,fc="rosybrown",alpha=0.4)
plt.text(0,0,"(0,0)",c="black",alpha=0.7,fontsize=12)
plt.legend(loc="upper right",edgecolor="black",frameon=True,facecolor="gray")
plt.fill_between(x,y,0,facecolor="gray",alpha=0.4)
plt.annotate("maximum",xy=(np.pi/2,1),xytext=(np.pi/2-1.4,1.1),color="dodgerblue",alpha=0.7,weight="bold",fontsize=12,arrowprops=dict(arrowstyle="->",connectionstyle="arc3",color="b"))
plt.savefig(path)
plt.show()
萌新第一篇文章给个赞呗
入门级(二)通道