matplotlibna
官网:http://matplotlib.org/
绘制图表,进行数据可视化
pandas:基础数据分析套件
scikit-learn:强大的数据分析建模库
keras:人工神经网络
matplotlib绘图的库
类似matlab的
绘制图表,进行数据可视化
pandas:基础数据分析套件
scikit-learn:强大的数据分析建模库
keras:人工神经网络
绘制图表,进行数据可视化
pandas:基础数据分析套件
scikit-learn:强大的数据分析建模库
keras:人工神经网络
#encoding=utf-8 ''' matplotlib就是一个绘图库 官网:http://matplotlib.org/ ''' import numpy as np import matplotlib.pyplot as plt #用此来绘制一条线 def main(): ''' # 1 基本线图绘制line x = np.linspace(-np.pi, np.pi, 256, endpoint=True)#定义一个横轴,类似matlab #定义在-pi到pi之间有256个点,endpoint定义是否包含最后一个点 c,s=np.cos(x),np.sin(x)#定义一个余弦函数c,定义一个正弦函数s plt.figure(1)#指定第一个图 # plt.plot(x,c)#进行绘图,定义自变量x,因变量c # plt.plot(x,s)#进行绘图,定义自变量x,因变量c # plt.show()#可以显示简单的余弦函数和正弦函数 plt.plot(x,c,color="blue",linewidth=1.0,linestyle="-",label="COS",alpha=0.5)#加其他属性,修改线型 #color指定颜色blue,linewidth指定线宽为1.0,linestyle指定线型是直线,加一个label,alpha指定透明度 plt.plot(x,s,"r*",label="SIN") #用另一种方式指定线型属性,r表示红色,*表示线型是星,再加个label plt.title("COS & SIN") # 加一些东西,定义一个标题 #此时界面上除了正弦反弦函数还有四条直线 #如果想加横轴纵轴,先把两条线隐藏另外两条线放到中间即可 ax=plt.gca()#gca()就是轴的编辑器 ax.spines["right"].set_color("none")#spines就是四条直线 ax.spines["top"].set_color("none")#“none”表示隐藏 ax.spines["left"].set_position(("data",0))#放到数据域的0位置 ax.spines["bottom"].set_position(("data",0)) ax.xaxis.set_ticks_position("bottom")#指定xaxis的位置,在横轴的下面 ax.yaxis.set_ticks_position("left")#指定yaxia的位置,在纵轴的左边 plt.xticks([-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) #设置横轴,需要两个数组,第一个数组指定横轴需要标识的位置,第二个数组指定横轴标识的内容(写成pi字符) plt.yticks(np.linspace(-1, 1, 5, endpoint=True))#直接给y轴标数字 #下面可以设置横纵轴标识符的大小 for label in ax.get_xticklabels()+ax.get_yticklabels():#得到所有横轴和纵轴的坐标标识 label.set_fontsize(16)#设置标识符字大小 label.set_bbox(dict(facecolor="white",edgecolor="None",alpha=0.2))#设置label小方块格式,也横纵坐标标识符小方块格式 #facecolor是背景颜色,edgecolor是边缘颜色,alpha透明度 plt.legend(loc="upper left")#指定legend位置,也就是图例偏上偏左 plt.grid()#打印出网格线 # plt.axis([-1,1,-0.5,1]) #指定显示范围 #前面两个指定横轴最小最大,后面两个指定纵轴最小最大 #接下来是一些有意思的功能 plt.fill_between(x,np.abs(x)<0.5,c,c>0.5,color="green",alpha=0.25)#填充功能 #x表示横轴,第二个是判断型元素,真返回1,假返回0;c表示纵轴 t=1#在t=1的地方进行注释,加条线 plt.plot([t,t],[0,np.cos(t)],"y",linewidth=3,linestyle="--") #“y”表示黄色,线型宽3,“--”表示虚线 #下面给这条线加个注释 plt.annotate("cos(1)",#画的是cos(1) xy=(t,np.cos(1)),#加的点的位置 xycoords="data",#以被注释的坐标点xy为参考 (默认值) xytext=(+10,+30),#如果不指定,注释会加到点上被覆盖住,所以有个偏移量 textcoords="offset points",#给偏移量指定是相对位置 arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))#指定箭头类型 #这里设置箭头的属性,弧度为0.2 plt.show() ''' #子图与多种图形绘制 #scatter散点图 fig=plt.figure() ax=fig.add_subplot(3,3,1)#图画在了三行三列第一个位置上 n=128 X=np.random.normal(0,1,n)#生成随机数 Y=np.random.normal(0,1,n) T=np.arctan2(Y,X)#T主要是用来上色 #plt.axes([0.025,0.025,0.95,0.95])#如果没指定ax的显示指定范围 ax.scatter(X,Y,s=75,c=T,alpha=.5)#用来画三点,s表示点的大小,c表示color,alpha表示透明度 plt.xlim(-1.5,1.5),plt.xticks([])#x的范围,这里xticks设为空 plt.xlim(-1.5,1.5),plt.yticks([]) plt.axis() plt.title("scatter") plt.xlabel("x") plt.ylabel("y") #plt.show() #bar条状图 fig.add_subplot(332)#也可以这么表示三行三列第二个图,但如果分10个以上则不能这么写 #只要加了add_subplot,接下来plt画图会在子图上,不赋值也可 n=10#定义十个点 X=np.arange(n) Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)#随机数范围在0.5~1之间 Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n) plt.bar(X,+Y1,facecolor='#9999ff',edgecolor='white')#正的Y1放在上面 plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')#负的Y2放在下面 for x,y in zip(X,Y1):#给Y1添加注释,ha表示水平位置,va表示垂直位置 plt.text(x+0.4,y+0.05,'%.2f'%y,ha='center',va='bottom') for x, y in zip(X, Y2):#给Y2添加注释 plt.text(x + 0.4, - y - 0.05, '%.2f' % y, ha='center', va='top') #Pie 饼图 fig.add_subplot(333) n=20#20个不分 Z=np.ones(n)#全1的部分 Z[-1]*=2#最后一个设置成2 plt.pie(Z,#数组传进去代表每一块的值 explode=Z*.05,#每一个扇形与中心的距离 colors=['%f'%(i/float(n)) for i in range(n)],#每一个都有不同的颜色,%f表示灰度颜色,这里是不同的灰度,也可用不同RGB色 labels=['%.2f'%(i/float(n)) for i in range(n)])#每一个颜色的值打印出来 plt.gca().set_aspect('equal')#成为一个正的圆,不然会根据跨度发生形变 plt.xticks([]),plt.yticks([]) #polar极坐标的图 fig.add_subplot(334,polar=True)#加上polar属性就是极值图,不然就是普通折线图 n=20 theta=np.arange(0.0,2*np.pi,2*np.pi/n) radii=10*np.random.rand(n) plt.polar(theta,radii) #plt.plot(theta,radii)#polt表示画折线 #heatmap热图 fig.add_subplot(335) from matplotlib import cm data=np.random.rand(3,3)#定义3*3的随机数 cmap=cm.Blues#蓝色系 map=plt.imshow(data, interpolation='nearest',#用离最近的差值方法 cmap=cmap, aspect='auto',#指定缩放是auto vmin=0,#指定cmap里最小值是0,白色 vmax=1)#最大值是指定的颜色Blue #3D图 from mpl_toolkits.mplot3d import Axes3D ax=fig.add_subplot(336,projection="3d")#需要指定projection是3d ax.scatter(1,1,3,s=100)#s表示尺寸,这里scatter也可以用plot之类的代替 #hot map 热力图 fig.add_subplot(313)#3列一行第三个,指的横跨第三行 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=np.meshgrid(x,y) plt.contourf(X,Y,f(X,Y),8,alpha=.75,cmap=plt.cm.hot)#热力图用contour,颜色用cmap指定 #保存图片 plt.savefig("./data/fig.png") plt.show()#半截show()了,就不会追加到同一个图里了 if __name__=='__main__': main()
numpy (Numerical Python):数据结构基础
scipy:强大的科学计算方法(矩阵分析、信号分析、数理分析。。)
matplotlib:丰富的可视化套件
pandas:基础数据分析套件
scikit-learn:强大的数据分析建模库
keras:人工神经网络
绘制图表,进行数据可视化
matplotlib主要用于绘制图表:
matplotlib官网