import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
x=np.linspace(0,10,100)
#fig=plt.figure()
#plt.plot(x,np.sin(x))
#plt.show()
#fig.savefig('ima1.png')
#画图有两种接口,一种是matlab型的,一种是面向对象型的。
#fig,ax=plt.subplots(2)
#ax[0]=plt.plot(x,np.sin(x))
#ax[1]=plt.plot(x,np.cos(x))
#这是面向对象的,更有利于对图像进行控制。
#plot(x,y,color="blue",linestyle='_')
# 调整坐标轴的上下限
#plt.xlim(4,11)
#plt.ylim(0.5,1)
#还有一个快捷的方法plt.axis(xmin,xmax,ymin,ymax),一行快速设置范围
#设置标签
#plt.title("正弦曲线")
#plt.xlabel("x值")
#plt.ylabel("sin值")
#若是要在单个坐标轴上显示多个线,只需要plt.legend()
#plt.scatter与plt.plot()的差别是scatter更加灵活,可以单独控制每个点。
# rng=np.random.RandomState(0)
# x1=rng.randn(100)
# y1=rng.randn(100)
#在-1.96~+1.96范围内曲线下的面积等于0.9500(即取值在这个范围的概率为95%),在-2.58~+2.58范围内曲线下面积为0.9900(即取值在这个范围的概率为99%).
#因此,由 np.random.randn()函数所产生的随机样本基本上取值主要在-1.96~+1.96之间,当然也不排除存在较大值的情形,只是概率较小而已。
# colors=rng.rand(100)#通过本函数可以返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1),不包括1。
# sizes=1000*rng.rand(100)
# plt.scatter(x1,y1,c=colors,s=sizes,alpha=0.3,cmap="viridis")
# plt.colorbar()#显示颜色条
# plt.show()
# #画误差线plt.errorbar()
# x=np.linspace(0,10,50)
# dy=0.8
# y=np.sin(x)+dy*np.random.randn(50)
# plt.errorbar(x,y,fmt='.k')
# #fmt是用来控制线条和点的外观的代码格式,yerr代表竖直的误差线,还有xerr,one_sidederrorbar(单侧误差线)。
# plt.show()
#画等高线图,plt.contour,用plt.contourf画带有填充色的等高线图,用imshow()来显示图像
def f(x,y):
return np.sin(x)**10+np.cos(10+y*x)*np.cos(x)
x=np.linspace(0,5,50)
y=np.linspace(0,5,40)
X,Y=np.meshgrid(x,y)#二维网络数据
z=f(X,Y)
#plt.contour(X,Y,z,colors='black')
#plt.contourf(X,Y,z,cmap='RdGy')
plt.imshow(z,extent=[0,5,0,5],origin='lower',cmap='RdGy')
plt.colorbar()
plt.axis(aspect='image')
plt.show()