【问题标题】:Highchart: Background color of AxisHighchart:轴的背景颜色
【发布时间】:2013-12-13 02:02:28
【问题描述】:

我看到了一个类似的问题here

作为回复,我们可以通过制作一个矩形来获得背景颜色。

我的问题是如何获得轴上所有刻度的xY 位置。我需要它,因为我只希望在备用日期使用背景颜色。

谢谢

【问题讨论】:

标签: highcharts


【解决方案1】:

您是否尝试将labels.formatter 与背景和useHTML 标志一起使用?像这样:http://jsfiddle.net/AeV7h/

    xAxis: {
        categories: ['Foo', 'Bar', 'Foobar'],

        labels: {
            useHTML: true,
            formatter: function() {
                return '<span class="hc-label">' + this.value + '</span>';
            }
        }
    },

还有 CSS:

.hc-label {
  background-color: red;
  padding: 0px 5px;
  color: yellow;
}

【讨论】:

  • 我希望彩色背景不仅在标签上,而且在 2 天之间的整个轴部分。如这里的图片所示:i40.tinypic.com/5k264h.png
  • 在这种情况下,您需要按照您所说的绘制矩形。要获取开始/结束值,请使用 chart.x/yAxis[0].toPixels(),请参阅:jsfiddle.net/AeV7h/1
【解决方案2】:

下面是一个在第 2 和第 4 个刻度之间着色的简单示例:

var tickStart = 1;
var tickEnd = 3;

$(function () {

   var rect = null;
   function drawRect(chart){
       if (rect){
           rect.element.remove();   
       }        

        var xAxis = chart.xAxis[0];  
        var pixStart = xAxis.toPixels (xAxis.tickPositions[tickStart], false);
        var pixEnd = xAxis.toPixels (xAxis.tickPositions[tickEnd], false);
        rect = chart.renderer.rect(pixStart, chart.chartHeight - xAxis.bottom, pixEnd - pixStart , 25, 00)
        .attr({
           'stroke-width': 0,
           stroke: '#888888',
           fill: '#888888',
           zIndex: 3
        })
        .add();
    }

    $('#container').highcharts({
        chart: {
            events: {
                load: function() {
                    drawRect(this);
                },
                redraw: function(){
                    drawRect(this);
                }
            }        
        },
        xAxis: {
        },

        series: [{
            animation: false,
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]     
        }]
    });
});

小提琴here.

【讨论】:

  • 此解决方案的唯一问题是,如果您调整图表大小,绘制的矩形将位于错误的位置。您需要实现 redraw() 函数并移动矩形。
  • 好东西马克!我注意到您正在删除它并重新绘制它 - 我只需调用 .attr() 方法并更新 x 和 y 坐标即可使其工作。也许它更快一点,但你的更干净。
猜你喜欢
  • 2018-04-06
  • 2013-03-22
  • 2022-07-18
  • 2012-03-25
  • 2013-05-21
  • 2021-05-14
  • 2017-12-02
  • 1970-01-01
  • 2020-12-06
相关资源
最近更新 更多