高质量图表输出

图表创建好后需要保存输出,本节讨论输出图表时需要注意的一些问题。[大谦Excel,dqexcel点com]

图表的大小

图表中文本的字体大小等与图表的大小是相关联的,只有图表大小固定时说文本字体大小才有意义。如果导出的图表大小不合适,后期需要调整大小,图表中文本的字体大小就变了。所以,生成图表时有必要指定固定大小。

用Shapes对象的AddChart2函数创建图表时可以直接设置图表的位置和大小,也可以创建图表后,用Shape对象的Left,Top, Width和Height等属性设置和修改图表的大小。

下面的代码创建图表并设置图表的大小。完整代码见:Samples->ch04 美化Excel图表->28 设置图表的大小->py.py。

code.python
root=os.getcwd()    #获取当前工作路径
app=xw.App(visible=True,add_book=False)    #创建Excel应用
wb=app.books.open(root+r'/data.xlsx',read_only=False)    #打开数据文件返回工作簿对象
sht=wb.sheets('Sheet1')    #获取指定工作表对象
sht.api.Range('A2:C11').Select()    #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlColumnClustered,20,20,400,300,True)
cht=shp.Chart    #获取图表
shp.Left=30    #设置图表位置和大小
shp.Top=30
shp.Width=300
shp.Height=200

字体设置

各种期刊对论文中文字的字体和字体大小都有要求,比如5-8磅等,最大不能超过12磅等。常见的英文字体有Arial, Times New Roman等。字体设置需要注意的问题,第一就是图表大小要先确定下来,成图后图表大小不作改动或不作大幅改动。第二就是字体的风格要统一,不要使用过多的字体样式。

第3章介绍了图表中坐标轴标题、刻度标签和图表标题等的添加和设置,请参阅。

将图表保存为图片

图表创建和编辑完成后,最常见的保存形式是保存为图片。图片有位图格式和矢量格式之分,Excel中两种格式都可以保存。

使用Chart对象的Export方法将图表导出到指定格式的图片文件。该方法的语法格式为:

code.python
cht.Export(FileName,FilterName,Interactive)

其中,cht表示图表对象,3个参数:

• FileName – 必需选项,表示导出文件的路径和文件名。

• FilterName – 可选项,指定导出文件的扩展名。

• Interactive – 可选项,值为True时显示包含筛选特定选项的对话框,值为False时使用默认选项。

下面创建图表,使用Chart对象的Export方法将图表以图片格式保存到相同路径下的cht.jpg文件。

code.python
root=os.getcwd()    #获取当前工作路径
app=xw.App(visible=True,add_book=False)    #创建Excel应用
wb=app.books.open(root+r'/data.xlsx',read_only=False)    #打开数据文件返回工作簿对象
sht=wb.sheets('Sheet1')    #获取指定工作表对象
sht.api.Range('A2:C8').Select()  #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlColumnClustered,20,20,350,250,True)
cht=shp.Chart    #获取图表
set_style(cht)    #设置样式
cht.Export(root+'/cht.jpg')    #将图表导出到JPG图片

矢量格式输出

矢量格式的图片在无限放大时不影响图形的精度,所以图片质量很高。Excel支持多种图片矢量格式,如pdf,svg等。

可以用ExportAsFixedFormat函数和Export函数实现矢量格式输出。下面创建图表,使用Chart对象的Export方法将图表以矢量图片格式保存到相同路径下的cht.svg文件。将工作表画面保存到cht.pdf文件。

code.python
root=os.getcwd()    #获取当前工作路径
app=xw.App(visible=True,add_book=False)    #创建Excel应用
wb=app.books.open(root+r'/data.xlsx',read_only=False)    #打开数据文件返回工作簿对象
sht=wb.sheets('Sheet1')    #获取指定工作表对象
sht.api.Range('A2:C11').Select()  #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlColumnClustered,20,20,350,250,True)
cht=shp.Chart    #获取图表
set_style(cht)    #设置样式
cht.Export(root+'/cht.svg')    #将图表导出到SVG图片
cht.ExportAsFixedFormat(0,root+'/cht.pdf')    #将图表导出到PDF文件