Highcharts的常用属性及导出SVG
做了好几个项目都用到了Highcharts,好用自然不用多说,这里总结一下每次作图经常用的一些配置,方便以后查看。
引入Highcharts非常简单,只需引入对应的js,页面中写入存放表格的div,js中对表格加以配置。
配置说明
下面是Highcharts官方的基础柱状图的实例配置,我将加入常用的配置并加以说明。想直接体验的朋友可以访问这个地址进行表格调试。https://jshare.com.cn/demos/hhhhD8
var chart = Highcharts.chart('container',{
// 设置表格的图例非显示,图例就是说明每个不同颜色柱子代表什么含义,一般项目中会自己定义所以加以隐藏
legend : {
enabled : false
},
// 表格的标题,设置为null为不显示
title : {
text : null
},
// 设置版权信息不显示,就是Highcharts.com.cn行
credits : {
enabled : false
},
// 设置表格右上角的下载和导出按钮不显示
navigation: {
buttonOptions: {
enabled: false
}
},
chart: {
type: 'column',
// 设置表格距离div的内边距,默认是[10,10,15,10]
spacing : [ 0, 0, 0, 0 ],
},
xAxis: {
categories: [
'一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'
],
crosshair: true,
// 不显示x轴文字
labels : {
enabled : false
},
},
yAxis: {
min: 0,
title: {
text: '降雨量 (mm)'
},
lables : {
// 对y轴上显示的文字进行格式化定义,下面的方法是数字超过三位时,用逗号进行间隔,并在最后添加mm
formatter:function(){
return Highcharts.numberFormat(this.value,0,"",",")+"mm";
}
}
},
tooltip: {
// head + 每个 point + footer 拼接成完整的 table
headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y:.1f} mm</b></td></tr>',
footerFormat: '</table>',
shared: true,
useHTML: true
},
plotOptions: {
column: {
borderWidth: 0
}
},
series: [{
name: '东京',
data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}, {
name: '纽约',
data: [83.6, 78.8, 98.5, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3]
}, {
name: '伦敦',
data: [48.9, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2]
}, {
name: '柏林',
data: [42.4, 33.2, 34.5, 39.7, 52.6, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1]
}]
});
以上只是一些基础的配置,更详细的说明可以进入官网进行查看https://api.highcharts.com.cn/highcharts
导出SVG
有这样一个需求,页面有打印pdf的功能,生成pdf的时候需要将表格显示在pdf文件中。大致思路是这样的,点击打印按钮的时候,将表格转成svg的代码,发给后台,后台再将svg转为png格式的图片,从而插入到pdf文件中进行显示。
怎么获得Highcharts的svg代码呢?当然官方也提供了方法,只需导入exporting.js,使用以下方法:
var svg = chart.getSVG();
通过以上方法获取到SVG文件后,发给后台进行使用batik的jar包进行转换(Java端使用Batik将SVG转为PNG),生成png。
这里还有一个问题,就是如果在表格显示后,通过js对表格进行了调整,导出的SVG代码依然是js修改前的代码,也就是说不能导出最终修改后的图表。
这时候就需要动一些歪脑筋了,通过F12可以看到表格的在页面其实就是SVG的代码
那是不是把svg标签中的代码获取到就可以生成想要的图片呢,答案是否定的。因为页面中的svg标签和通过方法获取到的svg还是有区别的,页面中的svg标签中不含有命名空间,具体可参考这篇文章svg命名空间。
<svg xmlns="http://www.w3.org/2000/svg">
<!-- more tags here -->
</svg>
如以上代码中的xmlns,就是这个svg的命名空间,xmlns并不是一个简单的属性,所以不能通过Jquery的attr()方法给强行添加。
我们可以使用另外一种直接的方式
var svg = $("#container .highcharts-container").html().replace(/<svg /, '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ');
这样获取到的svg字符就可以再后台生成想要的图片了。
Highcharts的常用属性及导出SVG的更多相关文章
- SVG DOM常用属性和方法介绍(1)
12.2 SVG DOM常用属性和方法介绍 将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析 ...
- SVG DOM常用属性和方法介绍
将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析器所特有的.SVG支持DOM2标准. 12.2 ...
- Jasper_mainReport_excel html pdf 主报表中常用属性
jasper中,excel , html, pdf 一般可以使用相同的主报表和子报表.需要在主报表中添加不同格式对应的属性.导出不同格式的报表,编译器会将相应的属性应用到对应的报表格式中. 常用属性如 ...
- 【Android自学日记】五大布局常用属性
线性布局(LinearLayout)常用属性: android:orientation="vertical"--决定子类控件的排布方式(vertical垂直:horizontal水 ...
- DataGrid中的常用属性
DataGrid中的常用属性 $('#dg').datagrid({ url:'datagrid_data.json', columns:[[ {field:'code',title:'Code',w ...
- Node.js process 模块常用属性和方法
Node.js是常用的Javascript运行环境,本文和大家发分享的主要是Node.js中process 模块的常用属性和方法,希望通过本文的分享,对大家学习Node.js http://www.m ...
- ImageView的常用属性
ImageView的一些常用属性,并且这些属性都有与之对应的getter.setter方法: android:adjustViewBounds:设置ImageView是否调整自己的边界来保持所显示图片 ...
- HTML a标签、4个伪类、常用属性(下载)、锚链接(待扩展:邮件、电话、短信、GPS)
HTML 超链接<a> 1.超链接可以是一个字.一个词.一组词.一幅图像,您可以点击这些内容来跳转到新的文档或者当前文档中的某个部分. 2.当您把鼠标指针移动到网页中的某个链接上时,箭头会 ...
- iOS导航控制器常用函数与navigationBar常用属性
导航控制器常用函数触发时机 当视图控制器的View将要出现时触发 - (void)viewWillAppear:(BOOL)animated 当视图控制器的View已经出现时触发 - (void)vi ...
随机推荐
- 前端基础(九):SweetAlert(弹出框)
简介 SweetAlert是一款很好用的弹出框框架 下载 点我下载 导入 博主用的是bootstrap-sweetalert,所以要依赖bootstrap,导入前先导入原生jQuery以及bootst ...
- C# Winform TabControl 双击关闭TabPage
在使用TabControl控件时,需要考虑自动创建的TabPage页实现——关闭功能 思路一:自定义TabControl控件,添加关闭按钮 思路二:TabControl控件TabPage显示ToolT ...
- [Abp vNext微服务实践] - vue-element-admin登录二
简介: Vue Element Admin是基于vue.element ui开发的后台管理ui,abp vNext是abp新一代微服务框架.本篇将会介绍如何改造Vue Element Admin权限验 ...
- Linux系统管理常用命令
Linux系统管理常用命令 分类: Linux2011-01-10 18:26 1538人阅读 评论(0) 收藏 举报 linuxcommandservicenginxuserunix 目录(?)[+ ...
- Educational Codeforces Round 33 (Rated for Div. 2) C题·(并查集变式)
C. Rumor Vova promised himself that he would never play computer games... But recently Firestorm — a ...
- Luogu P5018 对称二叉树 瞎搞树&哈希
我的天..普及组这么$hard$... 然后好像没有人用我的垃圾做法,,,好像是$O(n)$,但十分的慢,并且极其暴力$qwq$ 具体来说,就是直接$dfs$求出树高,然后想像出把原来的树补成满二叉树 ...
- BZOJ 1922: [Sdoi2010]大陆争霸 Dijkstra
Code: #include <queue> #include <vector> #include <cstdio> #include <cstring> ...
- [Luogu] 魔法树
https://www.luogu.org/problemnew/show/P3833 树链剖分 + 线段树 为啥会RE?? 不解 #include <iostream> #include ...
- CSP-S 模拟53 题解
题解: T1 u: 一看到修改这么多,但询问其实只有一个不难想到差分,但是他这个形状可以说很不规则,于是我们想到分别维护竖着的和斜着的差分,然后最后合并即可. 考场上瞎调了一波系数莫名AC,其实是维护 ...
- Python 通过文件名批量移动文件
Python 通过文件名批量移动文件 https://stackoverflow.com/questions/28913088/moving-files-with-wildcards-in-pytho ...