0

我有一个禁用 x 轴标签的简单 highChart。后来我使用以下代码在图表中添加文本

function populateDateOnChart(chartID,minRange,maxRange) {
    var chart = graphChart;     
    if(chart) {
        var panelPlyGraph = Ext.getCmp(chartID);
        chart.renderer.text(Highcharts.dateFormat('%Y-%m-%d', minRange), 1, panelPlyGraph.getHeight()-2)
        .css({
            color : '#666666' ,
            align : 'right',
            fontSize     : '18pt',
            fontWeight : 'normal'
        }).add();

        chart.renderer.text(Highcharts.dateFormat('%Y-%m-%d', maxRange), panelPlyGraph.getWidth()-148, panelPlyGraph.getHeight()-2)
        .css({
            color : 'red',//'#666666' ,
            align : 'right',
            fontSize : '18pt',
            fontWeight : 'normal'
        }).add();

    }
}

我也尝试将其添加到 chart.events.load,如下所示,但仍然无法在快照中获取它。

load: function() {
graphOffsets = {};
graphOffsets.left = graphChart.axes[0].left;
graphOffsets.length = graphChart.axes[0].len;
graphOffsets.min = graphChart.axes[0].min;
graphOffsets.max = graphChart.axes[0].max;
graphOffsets.invalidMax = inValidMaxdate;
populateDateOnChart('AccumulateGraph', graphOffsets.min, graphOffsets.max);

}

我能够在我的 HTML 页面中完美地实现 xAxis 标签。问题是,我需要保存图形的图像。为此,我使用了canvg。图像出现,但使用 chart.renderer.text.css 设置的 xAxis 文本未出现在图像中。

xAxis 标签属性很好,但它不允许我在第一个标签之前和第一个标签之后添加填充。

谁能给我建议一个canvg的替代方案,它也将采用chart.render.text.css,同时保存图像或一种在highChart中定位标签的方法,如代码所示。

我们没有用于 HighChart 的 div,我们将它放在 ExtJS 面板中。这可能是标签未出现在快照中的原因吗?

提前致谢!

4

1 回答 1

1

我想我知道问题出在哪里 - 正如你所建议的那样,你得到了错误的容器。有两点要改:

  • populateDateOnChart('AccumulateGraph', graphOffsets.min, graphOffsets.max);- 而不是'AccumulateGraph'使用this: populateDateOnChart(this, graphOffsets.min, graphOffsets.max);- 现在您将传递图表对象,而不仅仅是 ID
  • 相应地更新您的方法:

        function populateDateOnChart(chart,minRange,maxRange) {
                chart.renderer.text(Highcharts.dateFormat('%Y-%m-%d', minRange), 1, chart.plotTop + chart.plotHeight - 20)
                .css({
                    color : '#666666' ,
                    align : 'right',
                    fontSize     : '18pt',
                    fontWeight : 'normal'
                }).add();
    
                chart.renderer.text(Highcharts.dateFormat('%Y-%m-%d', maxRange), chart.plotLeft + chart.plotWidth -148, chart.plotTop + chart.plotHeight - 20)
                .css({
                    color : 'red',//'#666666' ,
                    align : 'right',
                    fontSize : '18pt',
                    fontWeight : 'normal'
                }).add();
        }
    

我只是好奇-为什么不能使用轴标签?例如,您可以使用xAxis.tickPositioner仅返回第一个和最后一个值,如下所示:

xAxis: {
  tickPositioner: functin(min, max) {
    return [min, max];
  },
  labels: {
    formatter: function() {
      return Highcharts.dateFormat('%Y-%m-%d', this.key);
    }
  }
}
于 2015-09-29T10:03:19.927 回答