javascript - 带滚动条的 HighChart 多重导出问题

标签 javascript html highcharts

我在导出启用了滚动条的柱形图时遇到问题,该图表在滚动后不会导出完整图表。它第一次工作,但是当我向右或向左滚动然后导出时,导出并未完全发生。 奥 git _a

var processedDataArray = [
{"Series_1_Value":1054237.31,"Series_2_Value":297367.88,"Series_3_Value":955472.31, "other":123450.45, "category":"CATEGORY-1"},
{"Series_1_Value":1914955.84,"Series_2_Value":472603.94,"Series_3_Value":1717425.84,"other":234560.45, "category":"CATEGORY-2"},
{"Series_1_Value":1172527.75,"Series_2_Value":368143.09,"Series_3_Value":1073762.75,"other":345670.45, "category":"CATEGORY-3"},
{"Series_1_Value":908568.43,"Series_2_Value":309490.05,"Series_3_Value":809803.43,"other":789010.45, "category":"CATEGORY-4"},
{"Series_1_Value":8001718.08,"Series_2_Value":5983055.85,"Series_3_Value":7112833.08,"other":890102.45, "category":"CATEGORY-5"},
{"Series_1_Value":1060572.17,"Series_2_Value":317503.11,"Series_3_Value":961807.17,"other":901230.45, "category":"CATEGORY-6"},
{"Series_1_Value":2484203.07,"Series_2_Value":1189924.57,"Series_3_Value":2187908.07,"other":435260.45, "category":"CATEGORY-7"},
{"Series_1_Value":6070895.44,"Series_2_Value":2722014.27,"Series_3_Value":5379540.44,"other":678900.45, "category":"CATEGORY-8"}
];

var series1DataArray = [];
var series2DataArray = [];
var series3DataArray = [];
var series4DataArray = [];
var categories = [];
var seriesNms = ['Series 1', 'Series 2', 'Series 3', 'Other'];
var _colors = ['#2F7ED8', '#915612', '#8BBC21', '#AA86F2', '#9054B6', '#76F0A3', '#A98835', '#09ACB6'];

for (i = 0; i < processedDataArray.length; i++) {
  var dataObject = processedDataArray[i];
  categories.push(dataObject['category']);
  series1DataArray.push({
    name: dataObject['category'],
    y: parseInt(dataObject['Series_1_Value'])
  });
  series2DataArray.push({
    name: dataObject['category'],
    y: parseInt(dataObject['Series_2_Value'])
  });
  series3DataArray.push({
    name: dataObject['category'],
    y: parseInt(dataObject['Series_3_Value'])
  });
  series4DataArray.push({
    name: dataObject['category'],
    y: parseInt(dataObject['other'])
  });
}

$(function() {
  new Highcharts.Chart({
    chart: {
      type: 'column',
      renderTo: 'colChart',
      borderColor: '#000000',
      borderWidth: 2,
      plotBackgroundColor: 'rgba(255, 255, 255, .1)',
      plotBorderColor: '#CCCCCC',
      plotBorderWidth: 1,
      zoomType: 'xy',
      width: 960,
      events: {
        load: function() {
          alert('Chart has loaded with exporting option ' + this.options.exporting.enabled + ", min:" + this.xAxis[0].min + ", max:" + this.xAxis[0].max + ", categories.length=" + categories.length);
        }
      }
    },

    scrollbar: {
      enabled: true
    },

    colors: _colors,

    exporting: {
      enabled: true,
      sourceWidth: 960,
      sourceHeight: 400,
      chartOptions: {
        xAxis: [{
          categories: categories,
          max: categories.length - 1
        }],
        scrollbar: {
          enabled: false
        }
      }
    },

    yAxis: {
      title: {
        text: 'Value($)'
      }
    },

    xAxis: {
      categories: categories,
      max: categories.length > 5 ? 5 : categories.length - 1
    },

    plotOptions: {
      series: {
        pointPadding: 0.05,
        groupPadding: 0.15
      }
    },

    title: {
      text: 'Column Chart',
      align: 'center'
    },

    series: [{
      name: seriesNms[0],
      data: series1DataArray
    }, {
      name: seriesNms[1],
      data: series2DataArray
    }, {
      name: seriesNms[2],
      data: series3DataArray
    }, {
      name: seriesNms[3],
      data: series4DataArray
    }],
    credits: {
      enabled: false
    }
  }); //end of Chart const
}); //end of function...
<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
  <title>Highcharts</title>

  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script type="text/javascript" src="http://code.highcharts.com/stock/highstock.js"></script>
  <script type="text/javascript" src="http://code.highcharts.com/highcharts.js"></script>
  <script type="text/javascript" src="http://code.highcharts.com/modules/exporting.js"></script>

</head>

<body>
  <div id="colChart"></div>
</body>

</html>

如何解决这个问题?如果您看到弹出对话框,它不会显示相同的“启用导出” bool 值。

最佳答案

minminRange 添加到您的 exporting.chartOptions.xAxis 似乎会产生积极的结果。这确实需要 max 仍然存在,并且如果缺少这三个中的任何一个,似乎会给出不同的结果。

例如( updated JSFiddle ):

exporting:{
    enabled: true,
    sourceWidth: 960,
    sourceHeight: 400,
    chartOptions: {
        xAxis: [{
            categories: categories,
            min: 0,                           // Added for fix
            minRange: categories.length-1,    // Added for fix
            max: categories.length-1
        }],
        scrollbar:{
            enabled: false
        }
    }
}

希望这能解决您的问题。至于为什么,我不知道。

关于javascript - 带滚动条的 HighChart 多重导出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28330095/

相关文章:

css - 如何在 CSS 中使用 "two-toned"字体变体?

jquery - 不使用 id 的 Javascript 日期选择器

javascript - highcharts.js 更改背景线条的颜色

javascript - 如何获取 Highcharts 中某个点的索引?

javascript - 页面加载时 jQuery 选项卡闪烁 (FOUC)

javascript - 使用 javascript 操作 cookie 是否存在安全问题?

javascript - TypeError : window. open 不是一个函数

javascript - 每次调整 HTML 元素大小时如何运行 JavaScript 函数?

jquery - CSS Transitions - 在线观看时帧率降低

javascript - 修改HighCharts中tickPositions的大小