matplotlib初学:figure与axes
第一天正式学习matplotlib画图,有点杂乱,做个记录,过两天看实例时应该会好一点。

1. 第一个matplotlib生成图

"""
1. np.linspace(0,10,1000)生成从0~10的1000个均匀数
2. 注意plot()中参数的前后顺序,先画图数据,然后颜色形状,然后标签
3. 'b--'这种简单表示方法,可以通过'plt.xticks??'在Ipython中运行查看
4. plt.plot(..label='$计算式$'..) 这种标签字符串前后加$号的方法为latex语法,可以显示数学公式,但会降低画图速度!!!!
5. plt.legend()有设置方式,但默认会自动寻找最佳位置
"""
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,10,1000)   #(1)
y = np.sin(x)
z = np.cos(x**2)

plt.figure(figsize=(8,4))
plt.plot(x,y,color='r',label='$sin(x)$',lw=2)  #(2)
plt.plot(x,z,'b--',label='$cos(x**2)$',lw=2)   #(3)(4)

plt.xlabel('Time(s)')
plt.ylabel('volt')
plt.title('pyplot_example')
plt.ylim(-1.2, 1.2)
plt.legend()  #(5)
plt.show()

*********** 第一处小结: *************
1. 程序前的解释语法与注意说明。
2. 画图顺序: 设置画图数据 ——> plt.figure()对象 ——> plt.plot()输入数据与参数绘图 ——> plt.xlabel/ylabel/title/xlim/ylim/legend()等参数设置(具体参数内容之后总结) ——> plt.show() 显示图像


2. 绘制多子图
figure是绘制对象,一个figure对象可以包含多个Axes子图,一个Axes是一个绘图区域,不加设置时,Axes为1,且每次绘图其实都是在figure上的Axes上绘图。
接下来看怎么绘制多子图。
使用 plt.subplot(numRows, numCols, plotNum),参数分别代表行数,列数,以及编号,编号顺序为从左到右、从上到下,从1开始。如果这三个参数值都小于10,可以去掉逗号写。子图不能重叠,如果新创建的子图覆盖了前子图,前子图会被删除掉。

"""
1. for index,value in enumerate('序列'/列表):
   这种for...in enumerate循环会取出两个值,一个是index即下标,一个是value即实际值,在用到下标时很方便;如果只写一个值for xx in enumerate(),会返回给 xx 一个(index,value)元组
2. 321+idx:321,322,323,324,325,326 即figure分为三行两列6个axes,分别设置 axisbg 背景颜色
"""
for idx,color in enumerate('rgbyck'):
    plt.subplot(321+idx, axisbg=color)
plt.show()

************ 第二处小结:***************
1. 学会一种新循环,for index,value in enumerate()可以取出下标和值
2. plt.subplot(where, what) 设置where-321三位置值,what-参数


3. figure()与axes()之间的关系

"""
1. 建立两个figure,对第二个figure设置axes
2. 循环中在 figure 和 ax1,ax2上做图
3. plt.figure(1) 在figure1存在的时候,作为选取作用
4. plt.sca(ax1) 选取ax1,使用plt.sca()-select current axes
"""
plt.figure(1) 
plt.figure(2)
ax1 = plt.subplot(121)
ax2 = plt.subplot(122)

x = np.linspace(0,3,100)

for i in range(5):
    plt.figure(1)
    plt.plot(x, np.exp(i*x/3))
    plt.sca(ax1)
    plt.plot(x, np.sin(i*x))
    plt.sca(ax2)
    plt.plot(x, np.cos(i*x))
plt.show()

************ 第三处小结: **************
1. figure()相当于给了一个画桌,axes()是上面的画纸,第一步:设置figure,第二步,设置axes,是直接跟在对应figure语句之后的
2. 步骤:plt.figure(1) ——> plt.subplot(121) ——> 设置数据 ——> plt.figure(1) - plt.plot() ——> plt.sca(ax1) - plt.plot() ——> plt.show()


4. 设置子图布局 plt.subplot2grid( )

"""
plt.subplot2grid( ) 参数意义:(3,3)-整个figure分为3行3列
                            (1,2)-从0开始计数,从第1行2列的窗口开始做图
                            colspan/rowspan-列向/行向跨度,缺省时默认跨度1
"""
fig = plt.figure(figsize = (6,6))

ax1 = plt.subplot2grid((3,3), (0,0), colspan = 2)
ax2 = plt.subplot2grid((3,3), (0,2), rowspan = 2)
ax3 = plt.subplot2grid((3,3), (1,0), rowspan = 2)
ax4 = plt.subplot2grid((3,3), (1,1))     # rowspan/colspan缺省,默认为1
ax5 = plt.subplot2grid((3,3), (2,1), colspan = 2)

plt.show()

************ 第四处小结:**************
axes可以在生成时直接设置分图,plt.subplot2grid( )

阅读更多
文章标签: python-matplotlib
个人分类: python
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

matplotlib初学:figure与axes

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭