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字符就可以再后台生成想要的图片了。

原文地址:https://www.cnblogs.com/ghq120/p/11666925.html

时间: 2024-08-06 00:00:32

Highcharts的常用属性及导出SVG的相关文章

SVG DOM常用属性和方法介绍

将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析器所特有的.SVG支持DOM2标准. 12.2.1  文档初始化相关 evt属性 evt表示事件本身,可以通过evt获取与当前事件相关的信息,用户可以在script中定义响应函数,进行相应的处理.它与普通JavaScript脚本中的event基本相同,只不过在普通JavaScript的脚本中简写成“e”. ownerDocument属性 通过引

.Net常用技巧_导出 Excel 和相关打印设置

Excel.Application myExcel = new Excel.Application();发 表Excel.Workbook workbookData = myExcel.Application.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);Excel.Worksheet xlSheet = (Worksheet)workbookData.Worksheets[1];//取得sheet1 1) 显示当前窗口: xlSheet.

【转载】通过JSFL让Flash Professional CS4或CS5拥有批量FLA导出SVG的功能

近期一个项目要求博主爱吾所爱(爱生活=爱技术)将 所有的.fla源文件里的图形都转为.svg矢量图,经常一番搜索之后,发现新版本的Flash Professional CC已经有此功能,但无奈我等用的机子是老版本CS4.0,那怎么办呢?安装CC需要太多的改变,主机是需要64位的系统,不可能为了这一个功能而装一个 新系统.于是再搜索,果然有解决办法,那就是安装插件!Github上有一高人搞了一个名为Extensible的项目,里面就有为Flash Professional制作的JSFL库(Exte

jasper excel html pdf 主报表中常用属性

jasper中,excel , html, pdf 一般可以使用相同的主报表和子报表.需要在主报表中添加不同格式对应的属性.导出不同格式的报表,编译器会将相应的属性应用到对应的报表格式中. 常用属性如下,根据需要添加: <property name="net.sf.jasperreports.page.break.no.pagination" value="apply"/> excel: <property name="net.sf.ja

&lt;display:table&gt;常用属性解释

1.官方网址:http://www.displaytag.org/1.2/displaytag/tagreference.html 2.应用举例:<display:table name="requestScope.pageList" id="curPage" class="table table-striped" sort="external"  requestURI="${resource}/test/lis

window对象的常用属性,常用方法

window对象的常用属性: window.self 返回当前窗口的引用 window.parent   返回当前窗体的父窗体对象 window.top 返回当前窗体最顶层的父窗体的引用 window.outerwidth       返回当前窗口的外部宽 window.outerheight  返回当前窗口的外部高 window.innerwidth       返回当前窗口的可显示区域宽 window.innerheight  返回当前窗口的可显示区域高 提示:通过直接在Chrome控制台中

样式常用属性

笔记信息 复习: 表单作用: 从使用的角度上说:html提供了一个输入内容的途径. 从服务器的角度:提供了一个收集信息的途径. 以便客户端和服务器进行交互. 例:注册页面,上传文件. 3种常见元素:input select textarea Input的十种常见类型: text,password,radio,checkbox,submit,reset,button,image,hidden,file Radio中name应该保持相同,以确保在单选按钮中的元素完成互斥. Checkbox中name

UIScrollView 的常用属性和方法

1.继承关系:UIView -> UIResponder -> NSObject2.代理:UIScrollViewDelegate// *2.1 一但偏移量发生变化就会调用  - (void)scrollViewDidScroll:(UIScrollView *)scrollView;// *2.2 将要缩放时就return谁   2.2.1 由于要缩放内容,我们需要设置最大和最小的缩放比例    scrollView.minimumZoomScale = 1.0f;    scrollVie

CoreAnimation 核心动画 的一些常用属性 和 方法

1.常用属性: frame   bounds   center   alpha    Transition 过渡    transform 动画效果 2.常用方法: +(void)setAnimationDelegate:(id)delegate; +(void)setAnimationWillStartSelector:(SEL)selector; 当动画结束的时候,执行delegate对象的selector,并且把beginAnimations:context:中传入的参数传进selecto