概述
Python中matplotlib库的学习
matplotlib是什么?
Matplotlib 是Python中类似 MATLAB 的绘图工具,熟悉 MATLAB 也可以很快的上手 Matplotlib
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.gridspec as grid
from matplotlib import animation
######## 基本图像绘制 ###########
x = np.linspace(-10,10,100)
y1 = x**2
y2 = np.cos(x)
y3 = np.exp(x)
print(x)
# plt.plot(x,y)
# plt.show()
######## figuer的使用 ###########
plt.figure()
plt.plot(x,y1)
plt.figure()
plt.plot(x,y2)
plt.figure(num=3,figsize=(10,5))
line_1, = plt.plot(x,y1,label = 'up')
line_2,= plt.plot(x,y3,color = 'red',linewidth = 2.0, linestyle = '--',label = 'down') #同一图绘制多条曲线
plt.show()
######## figuer的设置 ###########
plt.xlim(-5,5)
plt.ylim(-20,20)
plt.xlabel('I am x')
plt.ylabel('I am y') #坐标轴范围及标签的设置
new_ticks = np.linspace(-6,6,5)
print(new_ticks)
plt.xticks(new_ticks) #更换坐标轴范围
plt.yticks([-5,5],
[r'$really bad$',r'$really good$'] #更换坐标轴单位
)
##gca = 'get current axis'
ax = plt.gca()
ax.spines['right'].set_color('none') #右边的轴消失
ax.spines['top'].set_color('none') #上边的轴消失
ax.xaxis.set_ticks_position('bottom') #重新指定x轴
ax.yaxis.set_ticks_position('left') #重新指定y轴
ax.spines['bottom'].set_position(('data', 0)) #指定 data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data', 0)) #指定 data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
##图例设置
plt.legend(handles=[line_1,line_2],labels = ['y1','y2'],loc= 'best') # plot中加入label,再调用legend函数,传入两条曲线,添加标签,选择最佳位置显示
##图标中添加注解
x0 = 2
y0 = 4
plt.scatter(x0,y0,s=50,color='b') #添加点
plt.plot([x0,x0],[y0,0],'k--',lw=2.5) #添加辅助线,前面为两个点的x坐标,后面为两个点的y坐标
plt.plot([x0,0],[y0,y0],'k--',lw=2.5)
plt.text(3,3,'this is the point') #添加注释说明
##设置坐标轴刻度颜色和大小
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_fontsize(12)
label.set_bbox(dict(facecolor = 'white',edgecolor = 'None',alpha = 0.7))
plt.show()
###########################################################################
######## 散点图Scatter的绘制 ###########
n = 1024
x = np.random.normal(0,1,n) #
y = np.random.normal(0,1,n)
t = np.arctan2(y,x) # for color value / color bar
plt.scatter(x,y,s=75,c=t,alpha = 0.7) #绘制散点图
plt.xticks(()) #隐藏坐标轴
plt.yticks(())
plt.xlim(-1,1)
plt.ylim(-1,1)
plt.show()
###########################################################################
######## 柱状图的绘制 ###########
n = 12
X=np.arange(n)
y1 = (1 - X/float(n))*np.random.uniform(0.5,1.0,n) #产生均匀分布的随机数
y2 = (1 - X/float(n))*np.random.uniform(0.5,1.0,n)
plt.bar(X,+y1)
plt.bar(X,-y2) #绘制柱状图
for x,y in zip(X,y1):
plt.text(x , y , '%.2f'%y, ha = 'center', va = 'bottom')
for x,y in zip(X,y2):
plt.text(x, -y, '%.2f'%y, ha = 'center', va = 'top') #添加数据
plt.show()
###########################################################################
######## 等高线图绘制 ###########
def f(x,y):
return (1 - x/2 + x**5 + y**3)*np.exp(-x**2-y**2) #高度值
n = 256
x = np.linspace(-3,3,n)
y = np.linspace(-3,3,n) #x,y的值
X,Y = np.meshgrid(x,y) #网格输入值
plt.contourf(X,Y,f(X,Y),8,alpha = 0.75,cmap = plt.cm.hot) #填充颜色
C = plt.contour(X,Y,f(X,Y),8,colors = 'black',linewidth = 5) #等高线
plt.clabel(C,inline =True,fontsize = 10) #显示值
plt.show()
###########################################################################
######## image图片 ###########
a = np.random.normal(0,2,9).reshape(3,3)
print(a)
plt.imshow(a,interpolation='nearest',cmap='bone',origin='lower')
plt.colorbar(shrink=0.9)
plt.show()
###########################################################################
######## 3D 图绘制 ###########
fig = plt.figure()
ax = Axes3D(fig)
x = np.arange(-4,4,0.25)
y = np.arange(-4,4,0.25)
x,y = np.meshgrid(x,y)
r = np.sqrt(x**2 + y**2)
z = np.cos(r)
ax.plot_surface(x,y,z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
ax.contourf(x,y,z,zdir='z',offset=-2,cmap='rainbow') #zdir='z',往z轴方向绘制等高线图
ax.set_zlim(-2,2)
plt.show()
###########################################################################
######## subplot 函数使用 ###########
#方法一
plt.figure()
plt.subplot(2,1,1)
x1 = np.linspace(-5,5,100)
y1 = np.sin(x1)
plt.plot(x1,y1)
plt.subplot(2,3,4)
x2 = np.linspace(-5,5,100)
y2 = np.cos(x2)
plt.plot(x2,y2)
plt.subplot(2,3,5)
x3 = np.linspace(-5,5,100)
y3 = np.tan(x3)
plt.plot(x3,y3)
plt.subplot(2,3,6)
x4 = np.linspace(-5,5,100)
y4 = np.exp(x1)
plt.plot(x4,y4)
plt.show()
#方法二
#method 1 : subplot2grid
plt.figure()
ax1 = plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1) #3*3,起始为(0,0),跨度为1*3
ax1.plot([1,2],[1,2])
ax1.set_title('figuer 1')
ax2 = plt.subplot2grid((3,3),(1,0),colspan=2,)
ax3 = plt.subplot2grid((3,3),(1,2),rowspan=2)
ax4 = plt.subplot2grid((3,3),(2,0))
ax5 = plt.subplot2grid((3,3),(2,1))
#method 2 : subplot2grid
#method 2 : easy to define structure
plt.tight_layout()
plt.show()
###########################################################################
######## 图中图的绘制 ###########
fig = plt.figure()
x = [1,2,3,4,5,6,7]
y = [1,3,4,2,5,8,6]
left,bottom,width,height = 0.1,0.1,0.8,0.8 #图形位置
ax1 = fig.add_axes([left,bottom,width,height]) #添加小图,传入位置
ax1.plot(x,y,'r')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('title')
left,bottom,width,height = 0.2,0.6,0.25,0.25 #图形位置
ax2 = fig.add_axes([left,bottom,width,height]) #添加小图2
ax2.plot(y,x,'b')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('title_inside1')
plt.axes([.6,0.2,0.25,0.25]) #设置位置
plt.plot(y[::-1],x,'g') #绘制小图3 [::-1]对y逆序
plt.xlabel('x')
plt.ylabel('y')
plt.title('title_inside2')
plt.show()
###########################################################################
######## 主次坐标轴 ###########
x = np.arange(0,10,0.1)
y1 = 0.05*x**2
y2 = -1*y1
fig,ax1 = plt.subplots()
ax2 = ax1.twinx() # 反转ax1轴作为新的ax2
ax1.plot(x,y1,'g-')
ax2.plot(x,y2,'b--')
ax1.set_xlabel('X data')
ax1.set_ylabel('Y1',color = 'g')
ax2.set_ylabel('Y2',color = 'b')
plt.show()
###########################################################################
######## 用动画来展示画图 ###########
fig,ax = plt.subplots()
x = np.arange(0,2*np.pi,0.01)
line,= ax.plot(x,np.sin(x))
def animate(i):
line.set_ydata(np.sin(x+i/20))
return line,
def init():
line.set_ydata(np.sin(x))
return line
ani = animation.FuncAnimation(fig = fig,func=animate,frames=1000,init_func=init,interval=20,blit=False)
plt.shojiaw()
接下来将学习pytorch,并记录下笔记。
最后
以上就是犹豫日记本为你收集整理的python学习之matplotlib(2021-03-27)的全部内容,希望文章能够帮你解决python学习之matplotlib(2021-03-27)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复