python Matplotlib

Matplotlib库

官方效果图库

Matplotlib库的使用

Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发
matplotlib.pyplot是绘制各类可视化图形的合令子库,相当于快捷方式

import matplotlib.pyplot as plt

绘图基本函数

plt.axis([a,b,c,d]) #轴大小min(x)=a,max(x)=y,min(y)=c,max(y)=d
plt.ylabel(‘name’) #y axis name
plt.xlabel(‘name’) #x axis name
plt.savefig(‘name’,dpi=None) #save png file
plt.show() #show plt

文本显示常用函数

plt.xlabel() x轴标签
plt.ylabel() y轴标签
plt.title() 标题
plt.text() 任意位置增加文本
plt.annotate() 增加带箭头的注解

import matplotlib.pyplot as plt
plt.plot([3,3,4,5,2])
plt.ylabel('grade')
plt.savefig('test',dpi=600)
plt.xlabel('111')
plt.show()

绘图区域划分

方式一:
plt.subplot(nrows,ncols,plot_number) #行的分割数量nrows,列的分割数量ncols,对应的区域plot_number(6) 6/(max(axis=0)+1) 商为第几行,余数为第几列

import numpy as np
import matplotlib.pyplot as plt
def f(t):
    return np.exp(-t)*np.cos(2*np.pi*t)
a=np.arange(0.,5.,.02)

plt.subplot(221)
plt.title('图一区',fontproperties='SimHei')
plt.plot(a,f(a))
plt.subplot(222)
plt.title('图二区',fontproperties='SimHei')
plt.subplot(2,1,2)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.show()

subplot

方式二:
plt.subplot2grid()
plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)
理念:设定网格,选中网格,确定选中行列区域数量,编号从0开始
plt.subplot2grid((3,3),(1,0),colspan=2,rowspan=2) 分格数3X3,选中1行0列,列向占用2,行占用2

GridSpec类
import matplotlib.gridspec as gridspec
gs=gridspec.GridSpec(3,3)

ax1=plt.subplot(gs[0,:])
ax2=plt.subplot(gs[1,:-1])
ax3=plt.subplot(gs[2,0])

format_string常用标记如下:
颜色字符

代码颜色代码颜色
‘b’蓝色‘g’绿色
‘r’红色‘c’青绿
‘m’洋红‘y’黄色
‘k’黑色w’白色
‘0.8’灰度值字符串‘#008000’RGB颜色

风格字符

标记类型标记类型
‘-’实线‘–’披拆线
‘-.’点划线‘:’虚线
‘’ ‘’无线条

标记字符

标记类型标记类型
‘.’点标记‘1’下花三角
‘,’像素标记(极小点)‘2’上花三角
‘o’实心圈‘3’左花三角
‘v’倒三角‘4’右花三角
‘^’上三角‘s’实心方形
‘>’右三角‘p’实心五角
‘<’左三角‘*’星形标记
‘h’竖六边形‘H’横六边形
‘+’十字标记‘x’X标记
‘D’菱形‘d’瘦菱形
‘|’垂直线

直接用代码控制颜色、标记、线的属性

代码解释实例
color控制颜色color=‘green’
linestyle线条风格linestyle=‘dashed’
marker标记风格marker=‘o’
markerfacecolor标记颜色markerfacecolor=‘blue’
markersize标记尺寸markersize=20

plot多维图形绘制

plt.plot(x,y,format_string,**kwargs) #标准
#plt.plot(x,y,format_string,x,y,format_string,x,y,format_string) #扩展多维

import matplotlib.pyplot as plt
import numpy as np
a=np.arange(10)
plt.plot(a,a*1.5,'go-',a,a*2.5,'r*',a,a*3.5,'*',a,a*4.5,'b-.')
plt.show()

plot

pyplot的中文显示:

方式一:修改全局字体rcParams

属性解释
‘font.family’字体名称
‘font.style’字体风格,正常’normal’ 斜体’italic’
‘font.size’字体大小,整数字号或都’large’,‘x-small’
字体类型
‘SimHei’黑体
‘Kaiti’楷体
‘LiSu’隶书
‘FangSong’仿宋
‘YouYuan’幼圆
‘STSong’宋体
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.size']=20

方式二:修改部分属性:fontproperties(建议使用)

import numpy as np
import matplotlib.pyplot as plt
a=np.arange(0.,5.,0.02)
plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=20,color='green')
plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=20)
plt.title(r'正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25)
plt.text(2,1,r'$\nu=100$',fontsize=15)
plt.axis([-1,6,-2,2])
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.grid(True)
plt.show()

fontproperties修改属性

plt.annotate(s,xy=arrow_crd,xytext=text_crd,arrowprops=dict)
s 要注解的字符串
xy 箭头所在位置
xytext 文本所在位置
arrowprops 箭头属性

plt.annotate(r'$\mu=100$',xy=(2,1),xytext=(3,1.5),
               arrowprops=dict(facecolor='black',shrink=0.2,width=2))

lannotate

16种基础图表展示

pyplot的基础图标函数
plt.plot(x,y,fmt,…) #坐标图
plt.boxplot(data,notch,position) #箱形图
plt.bar(left,height,width,bottom) #条形图
plt.barh(width,bottom,left,height) #横向条形图
plt.polar(theta,r) #极坐标图
plt.pie(data,explode) #饼图
plt.psd(x,NFFT=256,pad_to,Fs) #功率谱密度图
plt.specgram(x,NFFT=256,pad_to,F) #谱图
plt.cohere(x,y,NFFT=256,Fs) #X-Y的相关性函数
plt.scatter(x,y) #散点图,x,y长度相同
plt.step(x,y,where) #步阶图
plt.hist(x,bins,normed) #直方图
plt.contour(X,Y,Z,N) #等值图
plt.vlines() #垂直图
plt.stem(x,y,linefmt,markerfmt) #柴火图
plt.plot_data() #数据日期

图表实例

饼图绘制,百分比类型的数据,展示效果较好
plt.pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,
shadow=False,labeldistance=1.1,startangle=None,radius=None,counterclock=True,
wedgeprops=None,counterclock=True,wedgeprops=None,textprops=None,
center=(0,0),frame=False,rotatelabels=False,data=None,*)

explode 分离程度(突出显示)
labels 标签
autopct 显示百分数方式
shadow 是否阴影(是否二维)
startangle 起始角度

import matplotlib.pyplot as plt
labels='frogs','hogs','dogs','logs'
sizes=[15,30,45,10]
explode=(0,0.1,0,0)
plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=90)
plt.axis('equal')  #X,Y方向相同
plt.show()

pie
直方图绘制,个数或取值方面的分布展示
plt.hist(x,bins=None,range=None,density=None,weights=None,cumulative=False,
bottom=None,histtye=‘bar’,align=‘mid’,orientation=‘vertical’,
rwidth=None,log=False,color=None,label=None,stacked=False,
normed=None,*,data=None,**kwargs)
bins 直方图内生成的数据汇集个数(直方个数)
normed=1 元素个数归一化,当normed=0时为元素个数

import matplotlib.pyplot as plt
import numpy as np
np.random.seed(0)
mu,sigma=100,20 #均值,标准差
a=np.random.normal(mu,sigma,size=100)
plt.hist(a,20,normed=1,histtype='stepfilled',facecolor='b',alpha=0.75)
plt.title('Histogram')
plt.show()

hist
极坐标
ax=plt.subplot(111,projection=‘polar’) #面向对象方式建立极坐标图
bars=ax.bar(theta,radii,width=width,bottom=0.)

import numpy as np
import matplotlib.pyplot as plt

n=20
theta=np.linspace(0.,2*np.pi,n,endpoint=False)
radii=10*np.random.rand(n)
width=np.pi/4*np.random.rand(n)

ax=plt.subplot(111,projection='polar') #面向对象方式建立极坐标图
bars=ax.bar(theta,radii,width=width,bottom=0.)

for r,bar in zip(radii,bars):
    bar.set_facecolor(plt.cm.viridis(r/10.))
    bar.set_alpha(0.5)
plt.show()

polar
散点图,使用面向对象的方式绘制

import numpy as np
import matplotlib.pyplot as plt
fig,ax=plt.subplots()
ax.axis=([-10,10,-10,10])
ax.plot(10*np.random.randn(100),10*np.random.randn(100),'o')
ax.set_title('Simple Scatter')
plt.show()

scatter

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值