提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
plt.rcParams['axes.unicode_minus']=False
# 以下方式二选一
plt.rcParams['font.sans-serif']=['Simhei']
mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']
在jupyter notebook中有2种图形展现形式
%matplotlib notebook:运行这句命令会在notebook中启动交互式图形
%matplotlib inline:运行这句命令会在notebook中启动静态图形
如果没有运行该命令,默认展示静态图形
%matplotlib notebook
%matplotlib inline
x=np.linspace(0.05,20,200)
y=np.sin(x)
fig = plt.figure()#创建一个图形(画板)
plt.plot(x,y,ls='--',lw=2,label='sin(x)',color='r')#调用画图函数画图(类似于在画板上贴画纸进行绘画)
plt.legend() #legend将标签显示出来
plt.show()
fig.savefig('test.png')
x=np.linspace(0,10,30)
y=np.sin(x)
plt.plot(x,y,marker='o',color='c')
plt.show()
x=np.random.randn(100)
y=np.random.randn(100)
plt.scatter(x,y,c='c',label='散点图')
plt.show()
x=np.random.randn(100)
y=np.random.randn(100)
colors=np.random.randn(100)
size=np.random.randint(20,500,100)
plt.scatter(x,y,c=colors,s=size,alpha=0.3,cmap='hsv')
plt.colorbar() #显示颜色条
plt.show()
函数功能:在x轴上绘制定性数据的分布特征,调用方式:plt.bar(x,y),与之相对应的是条形图
参数
x=[i for i in range(6)]
y=np.random.randint(45,100,6)
z=('a','b','c','d','e','f')
plt.ylabel('数据')
plt.bar(x,y,align='center',color='c',tick_label=z,hatch='///')
plt.show()
函数功能:在X轴绘制定量数据的分布特征
参数说明
x:在X轴上绘制箱体的定量数据输入值
bins:用于确定柱体的个数或柱体边缘范围,除了最后一个柱体作用都为闭区间,其他柱体为左闭右开区间
color:柱体颜色
histype:柱体类型
x=np.random.normal(loc=10000,scale=3000,size=1000)
bins=range(0,20000,500)
plt.hist(x,bins=bins,histtype='bar',color='c',alpha=0.6)
plt.xlabel('test')
plt.ylabel('数据')
plt.show()
堆积直方图和直方图相比,多添加2个参数
x:参数X需要对应两个数据对象,可以用列表装载
stacked:true即两个直方图堆积,false表示两个直方图并列
label:因为展示两类数据,所有标签需额外设置
x0=np.random.normal(loc=10000,scale=3000,size=1000)
x1=np.random.normal(loc=7000,scale=3000,size=1000)
bins=range(0,20000,500)
x=(x0,x1)
plt.hist(x,bins=bins,histtype='bar',label=['x0','x1'],stacked=True,alpha=0.6)
plt.xlabel('test')
plt.ylabel('数据')
plt.legend(loc='upper right')
plt.show()
当stacked=False时:
主要参数
x:定性数据的不同类别的百分比
explode:饼片边缘偏离半径的百分比(如果制作分裂式饼图,添加该参数即可)
labels:标记每份饼片的文本标签内容
autopct:饼片文本标签内容对应的数值百分比样式
startangle:从X轴起始位置开始,第一个饼片逆时针旋转的角度
shadow:是否绘制饼片的阴影
colors:饼片的颜色
其他参数:
pctdistance:每个饼片中心与开始之间的比率,默认值为0.6
labeldistance:绘制饼图标签的径向问题距离,默认1.1
percent='0.1','0.15','0.3','0.2','0.2','0.05'
explode=0.1,0.1,0.1,0.1,0.1,0.5 #如果突出某部分,可把对应值修改
autopacts="%.2f%%"
startangle=45
types='优','良','中','一般','次','差'
colors=['r','g','b','c','y','y']
plt.pie(x=percent,explode=explode,labels=types,autopct=autopacts,startangle=startangle,colors=colors)
plt.show()
不传explode参数时
箱体由第一四分位、中位数(第二四分位)和第三四分位数组成,箱须末端之外为离群值
参数:
x:输入数据
whis:四分位距的倍数,用来确定箱须,包括数据范围大小
widths:设置箱体宽度
sym:离群值的标记样式
labels:绘制每一个数据集的刻度标签
patch_artist:是否给箱体添加颜色
notch:如果为True,则箱体由凹痕
x=np.random.randn(1000)
plt.boxplot(x=x,whis=1.5,widths=0.3,sym='o',labels=['箱体图'],notch=False)
plt.grid(axis='y',ls=':',lw=1,color='grey',alpha=0.4)
plt.show()
x=np.linspace(0.05,20,200)
y=np.sin(x)
fig = plt.figure()#创建一个图形(画板)
plt.plot(x,y,ls='--',lw=2,label='sin(x)',color='r')#调用画图函数画图(类似于在画板上贴画纸进行绘画)
plt.legend() #legend将标签显示出来
plt.show()
fig.savefig('test.png')
from IPython.display import Image
Image('test.png')
plt.xlim:设置X轴范围
plt.ylim:设置y轴范围
x=np.linspace(0.05,20,200)
y=np.sin(x)
fig = plt.figure()#创建一个图形(画板)
plt.plot(x,y,ls='--',lw=2,label='sin(x)',color='r')#调用画图函数画图(类似于在画板上贴画纸进行绘画)
plt.legend() #legend将标签显示出来
plt.xlim(0.1,20)
plt.ylim(-2,2)
plt.show()
使用方法一:plt.axis(xmin,xmax,ymin,ymax)
xmin:x轴最小取值范围
xmax:x轴最大取值范围
ymin:y轴最小取值范围
ymax:y轴最大取值范围
使用方法二:plt.axis(str)
‘on’:打开轴线和标签
‘off’:关闭轴线和标签。等于设置相等的缩放比例,改变轴限制
‘scaled’:设置相等的缩放比例,改变绘图狂尺寸
‘tight’:设置限制大小足以显示所有数据
‘auto’:自动缩放(带数据的填充框)
xlabel()函数功能:设置X轴标签文本
调用方式:plt.xlabel(string)
string:标签文本内容
fontsize:字体大小
平移性:上面的函数功能,调用签名和参数说明同样可以平移到函数ylabel上
函数功能:标识不同图形的文本标签图例
调用方式:plt.legend(loc=‘lower left’)
主要参数:
通过plt.xticks()和plt.yticks()函数给x轴和y轴设定刻度,同时通过这2给函数中的label参数来给这些刻度贴上标签
函数功能:绘制刻度线的网格线
调用方式:plt.grid(linestyle=‘:’,color=‘’)
函数功能:绘制平行于x轴的水平参考线,与之对应的方法为plt.axvline()
调用方式:plt.axhline(y=0,c=‘r’,ls=‘:’,lw=‘’)
y:水平参考线的出发点
c:参考线的线调颜色
ls:参考线的线条风格
lw:参考线的线条宽度
函数功能:绘制垂直于x轴的参考区域,与之相应的函数为axhspan()
调用方式:plt.axvspan(xmin=1.0,xmax=2,facecolor=‘y’,alpha=0.3)
xmin:参考区域起始位置
xmax:参考区域终止位置
facecolor:参考区域填充颜色
alpha:参考区域填充颜色的透明度
函数功能:添加图形内容细节的指向型注释文本
调用方式:plt.annotate(string,xy=(,),xytext=(,),color=‘b’,arrowprops=dict(arrowstyle=‘->’,color=‘b’)
string:图形内容的注释文本
xy:被注释图形内容的位置坐标
xytext:注释文本的位置坐标
color:注释文本的字体颜色
arrowprops:指示被注释内容的箭头的字典属性:
plt.annotate('测试说明',xy=(np.pi/2,1),xytext=(2.5,1),weight='bold',
color='r',arrowprops=dict(arrowstyle='->',color='c'))
调用方式:plt.text(x,y,string,weight=‘bold’,color=‘b’)
x:注释文本位置横坐标
y:注释文本位置纵坐标
string:文本内容
weight:字体大小
color:字体颜色
plt.text(2,0.8,'sin(x)曲线',fontsize='12',color='c')
调用方式plt.title(string)
string:标题文本
loc:center/left/right
fontdict:可以用字典存储,包含以下参数:
plt.title('y=sin(x)',color='r',loc='center',fontsize=13)
subplot(C,R,P):划分C行P列,从最左上角向右数起,序号P依次增加,直到换一行,序号页是从左向右增加
x=np.linspace(-2*np.pi,2*np.pi,200)
y1=np.sin(x)
y2=np.cos(x)
y3=x
y4=x**2
plt.subplot(221)
plt.plot(x,y1,label='sin(x)')
plt.subplot(222)
plt.plot(x,y2,label='cos(x)')
plt.subplot(223)
plt.plot(x,y3,label='x')
plt.subplot(224)
plt.plot(x,y4,label='x**2')
plt.show()
plt.subplots()其实会返回两个对象,一个是figure画布实例,一个是坐标轴实例axes
fig,ax=plt.subplots(2,1) # 把fig想象成一块画板,ax想象成两张画纸
x=np.linspace(-2*np.pi,2*np.pi,200)
y_01=np.sin(x)
y_02=x**2
ax[0].plot(x,y_01,label="sin(x)")
ax[0].legend()
ax[0].set_title("图一")
ax[1].plot(x,y_02,label="x**2")
ax[1].legend()
ax[1].set_title("图二")
#如果在画完两幅子图之后,在这个时候想再往图一添加折线图y=x,可以直接通过实例ax[0].plot()来画:
ax[0].plot(x,x,color="r",ls="--",alpha=0.3)
plt.show()
语法:plt.figure(num, figsize, dpi, facecolor, edgecolor, frameon)
参数
fig_01=plt.figure(1,figsize=[3,3]) #建立“画布1”
ax_01=plt.axes()
fig_02=plt.figure(2,figsize=[2,2]) #建立“画布2”
ax_02=plt.axes()
plt.show()
plt.axes用来创建一个新的全窗口轴:
语法:plt.axes([left, bottom, width, height]…)
以左下角为原点,右上角为1,设置轴域的[左坐标,底坐标,宽度,高度]
x=np.linspace(-2*np.pi,2*np.pi,200)
y=np.sin(x)
fig=plt.figure(1,facecolor="gray") #建立“画布1”,设为灰色
ax_1=plt.axes([0,0,0.4,0.4],facecolor="w") #轴域(画纸)颜色设置成白色
ax_1.plot(x,y,ls="-.",color="r")
ax_2=plt.axes([0.4,0.4,0.6,0.6],facecolor="b") #轴域(画纸)颜色设成绿色
ax_2.plot(x,y,ls="-",color="c")
plt.show()
x=np.linspace(0,10,1000)
y=np.sin(x)
fig,((ax_01,ax_02),(ax_03,ax_04))=plt.subplots(2,2) # 通过plt.subplots()返回“画板”和“画纸”
ax_01.plot(x,y)
plt.show()
fig = plt.figure() # 先创建“画板”
ax_01 = fig.add_subplot(221) # 通过“画板”来调用“画纸”
ax_01.plot(x,y)
ax_02 = fig.add_subplot(222)
ax_03 = fig.add_subplot(223)
ax_04 = fig.add_subplot(224)
plt.show()
x=np.linspace(-2*np.pi,2*np.pi,200)
y=np.sin(x)
fig = plt.figure()
ax = plt.axes()
ax.plot(x,y,ls='--',color='c',label='test')
ax.legend()
plt.show()
fig = plt.figure()
ax = plt.axes()
x=np.linspace(0.05,20,500)
y=np.random.randint(1,100,500)
# ax.scatter(x,y,label="scatter figure")
# ax.legend()
plt.scatter(x,y,label="scatter figure")
plt.legend()
plt.show()
fig = plt.figure()
ax = plt.axes()
x=[i for i in range(1,6)]
y= np.random.randint(45,100,5)
z=("a","b","c","d","e")
ax.set_ylabel("text")
ax.grid(linestyle="-.",color="r",axis="y",alpha=0.15)
ax.bar(x,y,align="center",color="c",tick_label=z,hatch="|")
plt.show()
1、绝大多数plt函数都可以直接转换成ax方法,比如plt.plot()–>ax.plot()、plt.legend()–>ax.legend()等。
2、在设置坐标轴上下限、坐标轴标题和图形标题方面,会稍有不同:
更多【python-Python可视化之Matplotlib】相关视频教程:www.yxfzedu.com