嗨玩手游网

记录学习phantomjs+echarts-convert.js 生成图表图片过程

转载自:/d/file/gt/2023-09/d2ewttqkawn GitHub:https://github/ariya/phantomjs/

window:

添加的环境变量为:;D:\phantomjs\bin

phantomjs --version 测试版本提示版本说明安装成功

linux:

tar -jxvf phantomjs-2.1.1-linux-x86_64.tar2

ln -s /var/chart/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/bin/

ln -sf /var/chart/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs

方法一:(推荐使用)

①、用命令授权:ln -s /usr/echarts/phantomjs/bin/phantomjs /usr/bin/

②、在/usr/echarts/phantomjs/bin下执行chmod 777 phantomjs 给执行的权限

③、执行phantomjs –version或者phantomjs –v得到版本号则为成功

方法二:

①、在/usr/echarts/phantomjs/bin下执行chmod 777 phantomjs 给执行的权限

②、添加环境变量

命令:vi /etc/profile

在最后一行添加 export PATH=$PATH:/usr/echarts/phantomjs/bin

③、执行 source /etc/profile然后重启电脑shutdown -r now

export PATH=$PATH:/var/chart/phantomjs-2.1.1-linux-x86_64/bin

2、echarts-convert

下载:https://gitee/saintlee/echartsconvert

一个配合phantomjs,在服务端生成EChart图片的工具包。

echarts-conver参数

详见:https://gitee/saintlee/echartsconvert

-s或--server:开启服务监听,如果开启服务端,则-o不生效,这也就意味不能使用脚本命令生成图片;

-p或--port:端口号,只有-s启用时生效,改变监听端口号;

-o或--opt:ECharts的option,这里是json字符串,最外层不加引号;

示例:{title:{text:'ECharts示例'},tooltip:{},legend:{data:['销量']},xAxis:{data:['衬衫','羊毛衫','雪纺衫','裤子','高跟鞋','袜子']},yAxis:{},series:[{name:'销量',type:'bar',data:[5,20,36,10,10,20]}]}

-t或--type:生成类型file或base64,file是生成图片,base64是生成Base64字符串;

-f或--outfile:文件输出路径,只有--type=file时生效,如果不指定,则在脚本目录下创建一个tmp文件夹,将图片以时间戳为名字,保存到tmp目录下;

-w或--width:生成的图片宽度,默认800像素;

-h或--height:生成的图片高度,默认400像素。

生成图片命令:

phantomjs F:\ws\export02\tools\echarts-convert.js -infile F:\ws\export02\tools\option.js -width 800 -height 800

作为server

只能生成简单echarts,返回图片base64

phantomjs /usr/echarts/echartsconvert/echarts-convert.js -s -p 6666

后台启动

nohup phantomjs /usr/echarts/echartsconvert/echarts-convert.js -s -p 9090 &

9090是端口号,echartsconvert默认端口也是9090

命令行

作为脚本使用生成本地图片,能生成较复杂echarts

phantomjs /app/echartsconvert/echarts-convert.js -o [echartsOption] -t file -f [filePath] [-w width] -h[height]

phantomjs /var/chart/echartsconvert-master/echarts-convert.js -infile /var/chart/option.js -width 800 -height 800 -outfile /var/chart/111.png

发现 -infile没有了,一下是我的一个成功生成的例子

E:\Desktop\chart\phantomjs-2.1.1-windows\phantomjs-2.1.1-windows\bin\phantomjs E:\Desktop\chart\echartsconvert-master\echartsconvert-master\echarts-convert.js -o {'grid':{'top':20,'right':20,'bottom':40,'left':40},'legend':{'type':'scroll','bottom':'0','left':'center'},'tooltip':{'trigger':'item'},'series':[{'name':'','type':'pie','radius':'50%25','avoidLabelOverlap':true,'itemStyle':{'borderColor':'#fff','borderWidth':2},'label':{'show':true,'formatter':'{b}{d}%25'},'emphasis':{'label':{'show':true,'fontSize':'13'}},'data':[{'name':'口腔设备','value':3,'pieCount':3},{'name':'消毒设备3.22%25','value':10,'pieCount':10},{'name':'医用电子仪器','value':31,'pieCount':31},{'name':'医用高频仪器设备','value':8,'pieCount':8},{'name':'激光仪器设备','value':10,'pieCount':10},{'name':'中医仪器设备','value':3,'pieCount':3},{'name':'手术急救设备','value':69,'pieCount':69},{'name':'体外循环设备','value':15,'pieCount':15},{'name':'医用磁共振设备','value':2,'pieCount':2},{'name':'医用X线设备','value':21,'pieCount':21},{'name':'临床检验分析仪器','value':34,'pieCount':34},{'name':'医用超声仪器','value':40,'pieCount':40},{'name':'物理治疗及体疗设备','value':8,'pieCount':8},{'name':'光学仪器及窥镜','value':45,'pieCount':45},{'name':'病房护理设备','value':4,'pieCount':4},{'name':'医用核素设备','value':1,'pieCount':1},{'name':'其他','value':26,'pieCount':26}],'top':-50}]} -t file -f E:\Desktop\chart\tmpfiles\1682063489594.png

以下记录一下学习过程的问题:

在option里如果出现 %,则执行会挂掉

需要将%替换为%25

转载:/d/file/gt/2023-09/rn5mkjmxv40 Excel 目录怎么自动生成

Word中的目录可以一键自动生成,WPS/Excel表格中的工作表太多了,怎么生成一个目录呢?

步骤1:新建名称获取工作表名称列表。

如图,点击“公式”菜单下的“名称管理器”,新建一个名称为“我的目录”,引用位置为“=INDEX(GET.WORKBOOK(1),ROW(A1))&T(NOW()”的名称。

步骤2:创建目录。

在B1单元格输入公式“=IFERROR(HYPERLINK(我的目录&\"!A1\",MID(我的目录,FIND(\"]\",我的目录)+1,49)),\"\")”,向下填充公式,即可生成目录。接着可以将生成的目录复制到每个工作表下。复制时,可以先按Shift键选中所有工作表名称,一次性粘贴公式即可。

更新目录。

不需要额外的操作,不论插入新的工作表还是删除工作表,或者修改工作表名称,目录都会自动更新。

保存。

不论是WPS表格还是Excel,创建好目录,保存时,都会弹出如下的警告,请点击“是”,将文件保存为启用宏的工作簿,否则,下次打开文件时,目录会失效。

公式解释。

第一步操作解释:

宏表函数GET.WORKBOOK(1)将获得工作簿中所有的工作表名称,名称的格式为“[文件名称]工作表名称”(如图B列所示)。ROW(A1)在向下填充时会变成ROW(A2)、ROW(A3),从而得到行号1,2,3……“INDEX(GET.WORKBOOK(1),ROW(A1))&T(NOW())”,就可以一一获得工作表名称。T(NOW())的结果为空,也可以去掉,NOW()函数在文件重新打开或刷新时,会重新计算,因此公式中加上T(NOW())的作用就是当工作表有增减或修改时,可以自动重新计算。

第二步操作解释:我们需要的只是工作表名称,因此用“MID(我的目录,FIND(\"]\",我的目录)+1,49)”提取,这个公式表示从“]”之后开始提取49个字符,一般的工作表名称并没有这么长,因此写49就绰绰有余了。HYPERLINK是链接函数,第一个参数表示链接的位置,第二个表示最后显示的文字。从上图可以看出公式向下填充,扫描了已有的所有工作表名称后,会有些结果是空或“#REF”,因此用IFERROR忽略这些结果。

水平有限,这么说,不知说清楚了没有?

谢谢阅读,每天学一点,省下时间充实自己。欢迎点赞、评论、关注和点击头像。

毕业论文必备Word设置1——标题样式设置与目录自动生成

导 语

目录是毕业论文必备内容项目,主要有两种类型:一种是正文标题目录;一种是图表标题目录;实现目录的自动生成,需要预先将设置好的标题样式,应用到论文对应文字上。在写作过程中,就可节省大量人工校正格式的时间。高效码字,轻松撰写论文!

本文主要介绍Word样式与目录自动生成的设置,并提供一些常见问题的解决方案,以Gif演示,易于理解,希望能够帮助到砥砺同行的小伙伴们。

(文中引号中带有加粗与下划线的文字为Word设置选项的名称)

标题样式设置

预先设置好论文的正文、标题、图表标题等样式,能够保证主要精力集中在内容撰写上。

1.1 正文样式设置

默认的正文样式是其他标题样式的“基准样式”,修改后会导致标题样式改变。解决方法有两种:1. 将所有标题样式中的“基准样式”修改成“无样式”(所有都要调整,费事,不采用);2. 保证默认正文样式不变,新建一个正文2样式,根据格式要求,修改“正文2”样式,就不会影响标题样式。

具体步骤:

将光标移到论文正文段落,在“开始”选项卡的“样式”一栏中,点击右下角的箭头按钮,打开“样式”对话框,点击“正文”样式,然后点击左下角“A+”按钮(“新建样式”),以“正文”为基准,创建“正文2”新样式,根据毕业论文格式要求,修改“正文2”样式中的“段落”、“字体”等格式。

图1 正文2样式的新建与格式设置

1.2 标题样式设置

将光标移到论文标题文字上,在“开始”选项卡中,点击“样式”一栏右下角的箭头,打开样式选项卡,右击所选文字对应层级的标题样式,点击弹出菜单中的“修改”,在样式选项卡中,设置“后续段落样式”为“正文2”,设置相应的段落与字体格式,其他层级标题样式类似。

图2 标题样式的设置

Tips:在样式中,有可能未显示全部标题样式,可以点击样式弹出选项卡的“A√”按钮(“管理样式”),在弹出对话框中,选择“推荐”子选项卡,全选所有灰色的,标有“使用前隐藏”的标题样式后,点击“显示(W)”,即可在“样式”一栏中显示出来。

图3 显示隐藏的标题样式

1.3 创建论文目录

对论文中的标题文字,应用设置好的标题样式后,即可在“引用”选项卡的“目录”下拉菜单中,选择“自定义目录”,进行设置。选择“格式(T)”为 “模板”。去除“使用超链接而不使用页码(H)”前的“√”,在弹出对话框的“修改(M)……”中,设置目录中每个标题的缩进,段落,字体等格式。

图4 创建论文标题目录

图表标题与目录

2.1 设置表格标题

选择整个表格,在“引用”选项卡中,点击“插入题注”按钮,在弹出的对话框中,点击“新建标签(N)”,输入标签——“表”,选择“所选项目上方”,确定后,即可创建表标题。回车换行后,输入表标题的英文翻译,在样式中创建“图表英文标题”样式,将“样式基准”改为“无样式”,将“后续段落样式”改为“正文2”样式,将光标移至汉语表标题,在样式中,其显示为“题注”样式,右击,在弹出菜单中,选择“修改(M)”,将“后续段落样式”改为“图表英文样式”,设置好相应的格式,即可。

图5 设置表格标题的题注及格式

2.2 设置图片标题

选择整个图片,在“引用”选项卡中,点击“插入题注”按钮,在弹出的对话框中,点击“新建标签(N)”,输入标签——“图”,选择“位置(P)”为“所选项目下方”,“确定”后,即可创建图标题。

图6 设置图片标题的题注及格式

2.3 创建图表目录

在“引用”菜单选项卡中,点击“插入表目录”,在弹出对话框中,选择“格式”为“模板”,“题注标签”为“图”或“表”,去除“使用超链接而不使用页码”的勾选,即可分别创建“图”或“表”的目录,图表目录中标题的格式,可在“修改(M)……”中,进行调整。

图 7 分别创建图表目录

标题在文中的交叉引用

在论文中,引用章节段落标题和图表标题,可以使用Word “交叉引用”功能,将光标移至需要引用的位置,在“引用”菜单中,点击“交叉引用”按钮,选择“引用类型”为“图”、“表”或其他标题,设置“引用内容”为“仅标签和编号”。在调整图表或整个章节段落的前后顺序后,可以选中调整部分的所有内容,右击,在弹出菜单中点击“更新域”,即可快速校正编号顺序。

图8 标题在文中的交叉引用及调整后更新

Tips:标题中数字编号分别与英文字符、中文字符间的间隔不一致,导致标题与目录中数字编号后的文字上下无法对齐。

根据数字编号的类型,采取不同的解决方案:

1. 数字编号为手动输入

此时,文中标题和目录标题都会出现该问题,但目录是基于标题的,因此,务必在输入文中标题及编号时,一次性解决这个问题。

方法1:在中文字符与手动输入的数字编号间,不输入任何字符,依靠设置标题“段落”对话框-“中文版式(H)”中,勾选“自动调整中文与数字的间距(S)”,英文字符与手动输入的数字编号间,在输入法半角模式下,输入半角字符的空格,即可对齐,优点是配置好,只要控制是否输入半角空格即可,但间隔较窄。

方法2(推荐):在中文字符与手动输入的数字编号间,输入空格,英文字符与手动输入的数字编号间,要么在输入法全角模式下,输入全角字符的空格,或者简单选中其间空格,设置字体为中文字体,如宋体等(推荐),即可实现对齐,而且保证了有一个空格的间隔距离。

2. 数字编号为多级列表的自动编号

使用自动编号的多级列表,可打开“多级列表”-“定义新多级列表”对话框,在“更多(M)”中设置“编号之后(W)”为“空格”,这样文中标题无此问题,但创建的目录有此问题,其解决方案与上文方法2相同。

本文介绍了毕业论文正文与标题样式的简单设置,以及标题/图表目录的自动生成。下一篇分享,将介绍针对不同类型毕业论文编号格式,设置多级列表,链接标题样式与图表题注,实现标题与图表的自动编号,敬请期待!

python编程实践:用 xlwings 库自动生成图表的操作方法

上篇我讲解了用Python轻松操作Excel表格,需要学习或者查看,可以点击这里。在教程里,阐述了如何读Excel文件、修改Excel文件数据、添加新的Sheet、保存Excel文件。在业务场景中、或者办公自化中,需要根据表格的数据,自动生成曲线图、柱状图或者其他图。那么,我们用python又如何实现呢?

可以处理Excel文件的Python模块有很多,xlwings模块的功能是最齐全的。它不仅能读写和修改,而且能批量处理多个Excel文件。此外,xlwing模块还能与Exce VBA结合使用,在Excel中自动绘制图表。

1、模块安装

首先需要安装xlwings库,可以使用pip命令进行安装,具体的命令如下:

pip install xlwings

或者使用conda命令进行安装:

conda install xlwings

如果是其他环境,安装可以参考以前的讲解文章,或者留言讨论,这里不再赘述。

2、 生成图表的示例

本次将演示两个示例,分别是生成折线图和柱状图。

2.1 生成折线图

import xlwings as xw# 打开Excel应用app = xw.App()#当前活动程序wb = app.books.active#当前工作簿sheet = wb.sheets.active# 生成图表的数据sheet.range('A1').value = [['时间', '数量'], ['1日', 2], ['2日', 1], ['3日', 3] , ['4日', 4], ['5日', 5], ['6日', 4]]# 新建一个Excel图表对象chart = sheet.charts.add(150,10)# 设置图表数据#chart.set_source_data(sheet.range('A1:B7'))chart.set_source_data(sheet.range('A1').expand())# 设置图表类型为Linechart.chart_type = 'line'# 下面对图表美化# 设置图表标题和坐标轴标签chart.api[1].SetElement(2) #显示标题chart.api[1].ChartTitle.Text = '1-6日销售额动态表' #设置标题名称chart.api[1].Axes(1).HasTitle = Truechart.api[1].Axes(2).HasTitle = Truechart.api[1].Axes(1).AxisTitle.Text = '时间'chart.api[1].Axes(2).AxisTitle.Text = '数量'# 设置图表序列的名称和颜色chart.api[1].SeriesCollection(1).Name = '销售额'# 保存工作簿wb.save('data_temp_chart.xlsx')

运行结果如下:

以上示例中,我们首先打开Excel应用,获取当前活动的程序和Sheet对象,程序生成图表的数据。然后新建一个Excel图表对象,将数据放到图表中。接着设定图表的标题、坐标轴标签、图表序列的名称,并最后保存到Excel文件中。

2.2 生成柱状图

import xlwings as xw# 打开Excel文件wb = xw.Book("data_temp_chart.xlsx")# 选择一个工作表sheet = wb.sheets[0]# 创建一个柱状图chart = sheet.charts.add(150,50)# 设置图表数据chart.set_source_data(sheet.range('A1').expand())# 设置图表类型为Columnchart.chart_type = 'column_clustered'# 下面对图表美化# 设置图表标题和坐标轴标签chart.api[1].SetElement(3) #显示标题chart.api[1].ChartTitle.Text = '1-6日销售额动态图' #设置标题名称chart.api[1].Axes(1).HasTitle = Truechart.api[1].Axes(2).HasTitle = Truechart.api[1].Axes(1).AxisTitle.Text = '时间'chart.api[1].Axes(2).AxisTitle.Text = '数量'# 设置图表序列的名称和颜色chart.api[1].SeriesCollection(1).Name = '销售额'# 保存工作簿wb.save('data_temp_chart01.xlsx')

运行结果如下:

以上示例中,我们是首先打开上个例子生成的(data_temp_chart.xlsx)Excel文件,获取Sheet1对象。然后新建一个Excel图表对象,并将数据放到图表中。接着设定图表的标题、坐标轴标签、图表序列的名称,并最后保存到Excel文件data_temp_chart01.xlsx中。

2.3 后台自动运行excel

如果大家在运行的例子的过程中,不知发现了没有,excel是在前台运行,程序运行结束后,excel也不自动关闭。如何实现后台自动运行excel呢?

2.3.1 折线图例子的完善

上面的生成折线图的例子中,程序开始按照如下修改即可。

# 打开Excel应用app = xw.App(visible=False,add_book=True)

参数visible=False,就是excel应用运行前台不可见;add_book=True,自动添加一个新的工作薄。

还有一种方法就是添加下面一句就行了

app.visible = True

在程序最后添加wb.close()、app.quit()和app.kill()。

#关闭工作薄wb.close()#退出excel程序,不保存任何工作簿app.quit()#通过杀掉进程,强制Excel app退出app.kill()

在有些教程中,阐述为:“通常情况下,推荐用app.quit()”。这是一种不严谨的说法,只执行这一句,在任务管理器仍然有Excel app进程在活动。你的程序每执行一次,就多一个进程在内存。只有在执行app.kill()后,Excel app在任务管理器里就不存在了。这才是彻底的退出。

2.3.2 柱状图例子的完善

和折线的例子一样,wb = xw.Book("data_temp_chart.xlsx")这一句去掉,按照下面的代码修改:

# 打开Excel应用app = xw.App(visible=False,add_book=True)#打开Excel文件wb = app.books.open("data_temp_chart.xlsx")

在程序最后添加wb.close()、app.quit()和app.kill()。具体不再赘述。为了方面大家学习,给出完整的代码,如下:

import xlwings as xw# 打开Excel应用app = xw.App(visible=False,add_book=False)#打开Excel文件wb = app.books.open("data_temp_chart.xlsx")# 打开Excel文件#wb = xw.Book("data_temp_chart.xlsx")# 选择一个工作表sheet = wb.sheets[0]# 创建一个柱状图chart = sheet.charts.add(150,50)# 设置图表数据chart.set_source_data(sheet.range('A1').expand())# 设置图表类型为Columnchart.chart_type = 'column_clustered'# 下面对图表美化# 设置图表标题和坐标轴标签chart.api[1].SetElement(3) #显示标题chart.api[1].ChartTitle.Text = '1-6日销售额动态图' #设置标题名称chart.api[1].Axes(1).HasTitle = Truechart.api[1].Axes(2).HasTitle = Truechart.api[1].Axes(1).AxisTitle.Text = '时间'chart.api[1].Axes(2).AxisTitle.Text = '数量'# 设置图表序列的名称和颜色chart.api[1].SeriesCollection(1).Name = '销售额'# 保存工作簿wb.save('data_temp_chart01.xlsx')#关闭工作薄wb.close()#退出excel程序,不保存任何工作簿app.quit()#通过杀掉进程,强制Excel app退出app.kill()2.4 图表保存

有时业务场景的需要,需要将生成的图表,以图片的形式输出保存。

以上信息是官网的解释信息。翻译如下,path:要存储图片的路径。如果存储了Excel文件,则默认为与Excel文件在同一目录中的图表名称,否则默认为当前工作目录。

chart.to_png("./data_temp_chart.png")3. 总结

到这里,我们就讲解完了Python使用xlwings库生成图表的操作方法,通过以上的示例,你应该能够掌握如何生成折线图和柱状图,如果要生成其他的图表修改chart.chart_type的值就行。如果想要继续美化你程序自动生成的图表,如颜色、字体大小等,可以设置其他属性,这就需要了解更多xlwings的用法,可以通过xlwings的官方文档来进一步学习,也可以参考xlwings的示例代码库。当然,我也会后面的教程讲解中,会对此知识点的进一步阐述。

最后,由于平台规则,只有当您跟我有更多互动的时候,才会被认定为铁粉。如果您喜欢我的文章,可以点个“关注”,成为铁粉后能第一时间收到文章推送。