导出Matplotlib包绘制的图形

Matplotlib包绘制的图形可以保存为图片文件,或者直接导出到Excel等应用程序的图形可视化界面中。

保存Matplotlib包绘制的图形

使用savefig方法保存绘好的图形。下面将10.2.5小节创建的饼图保存到jpg图片文件。

code.python
>>> import matplotlib.pyplot as plt
>>> labels=["Class 1", "Class 2", "Class 3", "Class 4", "Class 5"]
>>> sizes = [15, 30, 25, 10, 20]
>>> plt.pie(sizes, labels=labels, shadow=True, autopct="%1.1f%%", startangle=90)
>>> plt.axis("equal")   #横纵轴比例相同
>>> plt.savefig("D:\\test.jpg")    #保存图片
>>> plt.show()

新创建的饼图被成功保存到D盘下。

Matplotlib包绘制的图形添加到Excel工作表

下面结合一个实例来介绍Matplotlib包绘图与Excel之间的交互操作。本例要用到少量xlwings包的知识,请参阅第4章的介绍。

首先打开D盘下的plttest.xlsx数据文件,获取工作表中的数据准备绘图。该示例数据文件在下载资料的Samples目录下的ch10子目录下可以找到。

code.python
>>> import xlwings as xw
>>> import matplotlib.pyplot as plt
>>> #创建Excel应用,可见,不添加工作簿
>>> app=xw.App(visible=True, add_book=False)
>>> #打开数据文件,可写
>>> bk=app.books.open(fullname="D:\\plttest.xlsx",read_only=False)
>>> sht=bk.sheets[0]  #获取第1个工作表

从Excel工作表获取数据,绘制堆栈面积图。使用工作表对象的pictures.add方法将图形添加到Excel工作表指定位置。left和top参数指定图形位置,width和height指定大小。

code.python
>>> fig=plt.figure()    #新建绘图窗口
>>> x=sht.range("A2:A6").value    #从Excel工作表获取绘图数据
>>> y1=sht.range("B2:B6").value
>>> y2=sht.range("C2:C6").value
>>> y3=sht.range("D2:D6").vlaue
>>> plt.stackplot(x, y1, y2, y3)    #利用获取的数据绘堆栈面积图
>>> sht.pictures.add(fig,name="plt_test",left=20,top=140,width=250,height=160)

新创建的堆栈面积图被添加到Excel工作表中,如图10-16所示。

Document Image

图10-16 Matplotlib绘图与Excel交互操作