读书笔记5基于matplotlib画图
一、导入需要的模块
import numpy as np import matplotlib.pyplot as plt import seaborn as sns import scipy.stats as stats
二、画基本图形
1、plot画图
y=np.random.randn(100) plt.plot(y,'b-') plt.xlabel('x') plt.ylabel('y') plt.title(u'title') plt.show()
可选参数如下所示:
也可以通过更改参数来改变画图效果
x=np.cumsum(np.random.rand(100)) plt.plot(y,label='line label',color='r',linestyle='-',marker='o') plt.show()
可选的参数有
2、scatter画图,使用两个相同大小的一维数组产生。
例如:数据服从正态分布,相关系数是0.5
z=np.random.randn(100,2) z[:,1]=0.5*z[:,0]+np.sqrt(0.5)*z[:,1] x=z[:,0]; y=z[:,1]; plt.scatter(x,y); plt.show()
参数也是可以修改的例如:
z=np.random.randn(100,2) z[:,1]=0.5*z[:,0]+np.sqrt(0.5)*z[:,1] x=z[:,0]; y=z[:,1]; plt.scatter(x,y,marker='s',c='r'); plt.show()
3、画条形图bar,需要两个一位数组,第一个是横坐标,每个条形图的开始位置;纵坐标是条形图的高度
y=np.random.rand(5); x=np.arange(5); plt.bar(x,y) plt.show()
修改他的显示属性,可以使用一个颜色数组来指定每个条形图的颜色。
y=np.random.rand(5);
x=np.arange(5);
colors=['#FF0000','#FFFF00','#00FF00','#00FFFF','#0000FF']
plt.bar(x,y,width=0.5,color=colors,edgecolor='#000000',linewidth=5)
plt.show()
4、pie图表,使用一个一维数组来表示,不要求累加和是1,可以使人以大小的正数。
x=np.arange(1,8); labels=['label1','label2','label3','label4','label5','label6','label7'] plt.pie(x,labels=labels) plt.show()
5、直方图hist,需要一个数组,bins参数表示将数据分成几组,默认是10组。
x=np.random.randn(2000); plt.hist(x,bins=30); plt.show()
如果想要生成累计直方图需要使参数cumulative为true
x=np.random.randn(1000);
plt.hist(x,bins=20,cumulative=True);
plt.show()
6、在同一个图上画出多张图表,需要首先使用figure()函数生成一个画板,画子图时需要使用sp=add_subplot(m,n,p)来表示子图。m表示行,n表示列,p表示第几个图。
返回的是子图的句柄用于设置一些参数。最后要想显示出来需要使用draw()函数,将这些子图画在画板上,然后用show()函数显示出来。
fig = plt.figure() ax = fig.add_subplot(2, 2, 1) y = np.random.randn(100) plt.plot(y); ax.set_title('1') y = np.random.rand(5) x = np.arange(5) ax = fig.add_subplot(2, 2, 2) plt.bar(x, y) ax.set_title('2'); y = np.random.rand(5) y = y / np.sum(y) y[y < .05] = .05 ax = fig.add_subplot(2, 2, 3) plt.pie(y) ax.set_title('3') plt.draw() plt.show()
7、3D画图
(1)画线,使用plot,需要Axed3D(fig)来画出3D轴线,
import copy from mpl_toolkits.mplot3d import Axes3D x=np.linspace(0,6*np.pi,600); z=copy.copy(x) x=np.cos(z) y=np.sin(z); fig=plt.figure() ax = Axes3D(fig) ax.plot(x,y,zs=z) plt.xlabel('x') plt.ylabel('y') ax.view_init(15,45) plt.draw() plt.show()
8、保存图像,使用savefig(’filename.ext’) ,其中ext支持png, pdf, ps, eps or svg格式。
import copy from mpl_toolkits.mplot3d import Axes3D x=np.linspace(0,6*np.pi,600); z=copy.copy(x) x=np.cos(z) y=np.sin(z); fig=plt.figure() ax = Axes3D(fig) ax.plot(x,y,zs=z) plt.xlabel('x') plt.ylabel('y') ax.view_init(15,45) plt.savefig('3dplot.png') plt.draw() plt.show()
如果觉得有用,想赞助一下请移步赞助页面:赞助一下