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官网