matplotlib-绘制精美的图标 第一节 快速绘图(II)
2017-05-06 16:43
696 查看
配置属性
matplotlib所绘制图表的每个组成部分都和一个对象对应,可以通过调用这些对象的属性设置方法set_*()或者pyplot模块的属性设置函数setp()来设置它们的属性值。例子
import matplotlib.pyplot as plt import numpy as np plt.figure(figsize=(4,3)) x = np.arange(0, 5, 0.1) line = plt.plot(x, 0.05*x*x)[0] #调用Line2D对象的Set_*()方法来设置属性值,修改曲线的透明度 line.set_alpha(0.5) #同时绘制sin cos 两条曲线 lines = plt.plot(x, np.sin(x), x, np.cos(x)) #调用setp()可以同时配置多个对象属性,这里同时设置两条曲线的颜色和线宽 plt.setp(lines, color="r", linewidth=4.0) plt.legend() plt.show()
与代码部分set_*() 对应的是get_*()或者是通过plt.getp()来获取对象的属性值:
line.get_linewidth() plt.getp(lines[0], "color")
该部分就不再过多赘述。
绘制多子图
一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘图区域,称之为子图。在前面的例子中,Figure对象只包括一个子图。可以使用subplot()快速绘制包含多个子图的图表,调用形式如下:subplot(numRows, numCols, plotNum)
图表整个绘图区域被等分成numRows行和numCols列,然后从左到右,从上到下的顺序对每个区域进行编号,左上区域的编号为1.plotNum参数指定所创建Axes对象的区域。如果numRows, numCols, plotNum三个参数都小于 10 ,则可把它们缩写成一个整数。例如subplot(323)和subplot(3,2,3)的含义相同。如果新创建的子图和之前创建的子图区域有重叠的部分,之前的子图将被删除。
看下面代码
import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(8,6))
for idx, color in enumerate("rgbyck"):
plt.subplot(321+idx, axisbg=color)
plt.legend()
plt.show()
效果如图
图中将整个绘图区域等分按照numRows, numCols设定的多个子图,如果希望某个子图占据整行或整列,可以按照如下方法调用subplot()
import matplotlib.pyplot as plt import numpy as np plt.figure(figsize=(8,6)) plt.subplot(221) plt.subplot(222) plt.subplot(212) plt.legend() plt.show()
效果如图
subplot()返回它所创建的Axes对象,我们可以将这些对象保存起来,然后用sca()交替让它们成为当前Axes对象,并使用plot()在其中绘图。如果需要同时绘制多幅图表,可以给figure()传递一个整数参数来指定Figure对象的序号。如果序号指定的Figure对象已经存在,将不创建新的对象,而只是让它成为当前Figure对象。
import matplotlib.pyplot as plt import numpy as np 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.legend() plt.show()
首先通过figure()创建了两个图表,它们的序号分别为1和2。然后在图表2中创建了左右并排的两个子图,并用变量ax1,ax2保存。
在循环中,先调用figure(1)让图表1成为当前图表,并在其中绘图。然后调用sca(ax1)和sca(ax2)分别让子图ax1和ax2成为当前子图,并在其中绘图。当它们成为子图时,包含它们的图表2也自动成为当前图表,因此不需要调用figure(2)。
相关文章推荐
- matplotlib-绘制精美的图标 第一节 快速绘图(I)
- 『科学计算』科学绘图库matplotlib学习之绘制动画
- Python可视化学习(2):Matplotlib快速绘图基础
- Matplotlib快速绘图
- 【原】使用Tkinter绘制GUI并结合Matplotlib实现交互式绘图
- python科学计算学习二:matplotlib绘图,图标注释(2)
- Matplotlib快速绘图
- matplotlib-绘制精美的图表
- 使用Tkinter绘制GUI并结合Matplotlib实现交互式绘图
- Python 绘图 Matplotlib 快速参考手册
- matplotlib绘制精美的图表(这是教程哦)
- matplotlib-绘制精美的图表
- matplotlib-绘制精美图表
- python+matplotlib实现动态绘制图片实例代码(交互式绘图)
- python科学计算学习二:matplotlib绘图,图标注释(2)
- matplotlib-绘制精美图表
- matplotlib-绘制精美的图表
- matplotlib-绘制精美的图表
- 使用 Matplotlib 绘制精美的数学图形
- Python+matplotlib+numpy绘制精美的条形统计图