matplotlib 绘图库的简单用法

首先在ipyhon启动的时候一定要加上–pylab,否则,无法进行绘图操作,而在spyder环境下,打开一个ipython 的console貌似默认是不会加上这个选项的,所以用spyder环境,无法正常绘图。现在直接在cmd下输入ipython –pylab开始研究用matplotlib进行绘图的方法。注意,显示出来的图像,需要手动拖住边框缩放一下才能刷新。
1

 import numpy as np
  import matplotlib.pyplot as plt  
  fig = plt.figure()

上面的代码是产生一个空的窗口。 plt.figure有一些选项,特别是figsize,它用于确保党图片保存到磁盘时具有一定的大小和横纵比,matplotlib中的Figure还支持一种MATLAB式的编码架构如plt.figure(2)。通过plt.gcf()即可得到当前FIgure的引用。不能通过空Figure绘图,必须用add_subplot创建一个或多个subplot才行.

   ax1 = fig.add_subplot(2,2,1) 
   ax2 = fig.add_subplot(2,2,2)
   ax3 = fig.add_subplot(2,2,3)

这个时候发出一条绘图的命令,那么matplotlib’就会在最后一个用过的subplot上进行绘制(如果没有子窗口,那么创建一个)

plt.plot( randn(50),cumsum(),'k--' );

这里写图片描述
“k–”是一个线型选项,对应黑色虚线图,上面那些由fig.add_subplot返回的对象是AxeSubplot对象,直接调用它们的实例方法,就可以在其他空着的窗口里面画图了

具体可以绘制的图像类型有直方图,散点图等等,以后慢慢补充它们用法。

fig,axes = plt.subplots(2,3)

这种用法,可以一下子产生2x3个子窗口,并且以numpy数组的方式保存在axes中,而fig仍然是整个图像对象,这样我们可以通过对axes进行索引来访问每个子窗口。

fig,axes = plt.subplots(2,2, sharex = True, sharey = True)
for i in range(2):
    for j in range(2):
        axes[i,j].hist( randn(500), bins = 50,color = 'k',alpha = 0.5 )

plt. subplots_adjust( wspace = 0, hspace = 0 )      

这一段最后一句就是调整图像边框,使得各个图之间的间距为0
由subplots或者add_subplot添加的子窗口都是AxesSubplot对象,支持一般plt支持的大部分绘图命令。
suplots还可以通过sharex与sharey来指定subplot应该具有相同的x轴或y轴。调节xlim与ylim会自动缩放
各个图表的界限。

绘图的几个重要的参数

color (c)关键字:这个可以是’g’,’k’等直接指定颜色的方法,也可以是与样本点数量一致的一个numpy数组,每个元素的值是0-1之间的一个浮点值,对应的是每个点对应所选定调色板中的颜色值。这个在以不同颜色区分每种样本的时候很有用。

linestytle(ls): 指定线型。如“–”虚线,’-.’ 点划线

marker:指定点的样式,如“o”每个点就是一个圆形。

设置标题、轴标签、刻度以及刻度标签

两种方法一种是过程型的类matlab方式,另一种是原生的matplotlib API方式,一般倾向于后者

fig  = plt.figure(); ax = fig.add_subplot(1,1,1)
ax.plot( randn(1000).cumsum() )
#用于演示xticks的简单线型图
ticks = ax.set_xticks([0,250,500,750,1000]) #刻度在0,250,600,750,1000的地方生成
labels = ax.set_xticklabels( ['one','two','three','four','five'], rotation = 30, fontsize = 'small' )  #跟上面的刻度一致,替换为文字,文字的属性在后面关键字中显示

#再用set_xlabel为x轴设置一个名称,并用set_title设置一个标题
#ax.set_title( 'My first matplotlib plot' )
ax.set_xlabel('Stages')

#添加图例
,最简单的方法是在每次subplot绘图的时候传入一个label
fig = plt.figure();      ax = fig.add_subplot(1,1,1)
ax.plot( randn(1000).cumsum(), 'k', label = 'one' )
ax.plot( randn(1000).cumsum(), 'k--', label = 'two' )
ax.plot( randn(1000).cumsum(),'k.',label = 'three' )
ax.legend( loc = 'best' )

添加图例这块,如果是散点图,针对不同的样本标志不同的颜色,并显示图例,那么这样只能依次把样本中每个不同类的点,分别放在不同的数组中,分别用scatter来绘图,并赋予不同的标签,这样就最后调用legend就能显示图例

猜你喜欢

转载自blog.csdn.net/ronaldo_hu/article/details/51236456