【问题标题】:Highcharts server side image generation, how to set up legend labelFormatter in callback argumentHighcharts 服务器端图像生成,如何在回调参数中设置图例 labelFormatter
【发布时间】:2015-04-21 13:19:20
【问题描述】:

我正在开发一个 PDF 文件生成器,用户使用 Highcharts 服务器端图像生成来填充文档中的图形信息。

http://www.highcharts.com/docs/export-module/render-charts-serverside

一切都很好,我会自定义我的高图图例,以便在图表底部的每行获得一个图例。 由于服务器端生成使用 JSON 格式,我无法设置“legend.labelFormatter”回调来强制在每个图例后换行。

源代码的自述文件中有一个简单的例子,但我不能满足我的需要。 (https://github.com/highslide-software/highcharts.com/tree/master/exporting-server/phantomjs)

自述文件示例:

function(chart) {
    chart.renderer.arc(200, 150, 100, 50, -Math.PI, 0).attr({
        fill : '#FCFFC5',
        stroke : 'black',
        'stroke-width' : 1
     }).add();
}

我自己的回调

function(chart){

    console.log('COOL!');

    chart.legend.labelFormatter = function () {


        console.log('COOL 2!');


        return this.name + "\n";
    };

    chart.redraw();

}

【问题讨论】:

  • 当然,那永远不会显示“COOL 2!”

标签: javascript jquery json highcharts phantomjs


【解决方案1】:

我认为(至少)有两种解决方案可以满足您的需求:

  • 使用labelFormat 代替labelFormatter,参见API。在您的情况下:labelFormat: "{name}\n" - 不起作用
  • 使用layout 选项将图例渲染为垂直。再次,请参阅API
  • 为图例设置固定的widthdemo

不管怎样,你试过用labelFormatter吗?我知道它是 JSON,但我认为它有效。

【讨论】:

  • 要发送图表选项,我必须将数据发布到 PHP 网络服务。在发送选项之前,我在 JS JSON.stringify 中使用删除所有类型为“回调”的对象。我首先尝试了它,这就是我了解到 JSON 格式不包含回调的方式:-/ 我将尝试使用 labelformat。关于垂直布局,又出现了一个问题。当我生成图像时,使用图例计算图表高度有点难以不显示图例导航。使用水平布局,这是由 highcharts 插件 (github.com/highslide-software/adapt-chart-to-legend) 促成的。
  • 好吧,我试过 'labelFormat: "{name}\n"' 但这不起作用。最后我尝试将布局设置为垂直,并且它在第一次工作时就像我一样。
  • 确实,pointFormat 不起作用。另一种解决方案是为图例设置width,这样图表将包装图例项,例如:jsfiddle.net/m6ot1v8f/1
  • 关于 JSON - 事实上,JSON 不支持函数。但是,在使用 labelFormatter 测试 exporting 时 - 它可以工作。我认为您不需要使用JSON.stringify()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
相关资源
最近更新 更多