javascript - Highstock 视觉失真多个图表

标签 javascript charts highcharts visual-glitch

我试图在页面的三个选项卡中的每一个上显示不同的图表。 第一个选项卡可以完美呈现,但第二个和第三个选项卡则不然。

Example of first chart ok

Example of second and Third chart not OK

每次选择选项卡时,都会出现 $(window).trigger('resize');执行后图表会调整大小。到目前为止,他们做到了,但视觉故障仍然存在。

当我第一次创建图表时,我单独创建它们:

var graficoOpcCuenta = { chart: { renderTo: 'graficoPorCuenta' }, rangeSelector: { selected: 1 }, title: { text: 'Rentabilidad Cuenta' }, series: [{ data: [], tooltip: { valueDecimals: 2 } }] };
var graficoOpcCliente = { chart: { renderTo: 'graficoPorCliente' }, rangeSelector: { selected: 1 }, title: { text: 'Rentabilidad Cliente' }, series: [{ data: [], tooltip: { valueDecimals: 2 } }] };
var graficoOpcGrupo = { chart: { renderTo: 'graficoPorGrupo' }, rangeSelector: { selected: 1 }, title: { text: 'Rentabilidad Grupo' }, series: [{ data: [], tooltip: { valueDecimals: 2 } }] };

var graficoPorCuenta = new Highcharts.StockChart(graficoOpcCuenta);
var graficoPorCliente = new Highcharts.StockChart(graficoOpcCliente);
var graficoPorGrupo = new Highcharts.StockChart(graficoOpcGrupo);

有什么想法吗?

我目前正在使用 Highstock JS v2.1.9

更新:

将宽度设置为chart:{..., width: x}只是没成功。

我正在使用:

  • jQuery v2.1.4
  • Bootstrap 3.3.5

根本没有 jQuery UI

更新2

这是我的调整大小:

function resize() {
    var height = "some value";

    $("#graficoPorCuenta").setGridWidth($("#grillaPorCuenta").width());
    $("#graficoPorCliente").setGridWidth($("#grillaPorCliente").width());
    $("#graficoPorGrupo").setGridWidth($("#grillaPorGrupo").width());

    if ($('#graficoPorCuenta').highcharts() != undefined) {
        $('#graficoPorCuenta').highcharts().setSize($("#grillaPorCuenta").width(), height + 120, doAnimation = false);
        graficoPorCuenta.reflow();
    }
    if ($('#graficoPorCliente').highcharts() != undefined) {
        $('#graficoPorCliente').highcharts().setSize($("#grillaPorCliente").width(), height + 120, doAnimation = false);
    graficoPorCliente.reflow();
    }
    if ($('#graficoPorGrupo').highcharts() != undefined) {
        $('#graficoPorGrupo').highcharts().setSize($("#grillaPorGrupo").width(), height + 120, doAnimation = false);
        graficoPorGrupo.reflow();
    }
}

另外:

$(window).bind('resize', function () {
      resize();
}).trigger('resize');

标签更改:

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
    target = $(e.target).attr("href") // activated tab
    if (target == "#tabCuenta") {
        graficoPorCuenta.reflow()
    }
    if (target == "#tabCliente") {
        graficoPorCliente.reflow()
    }
    if (target == "#tabGrupo") {
        graficoPorGrupo.reflow()
    }
    $(window).trigger('resize');
});

最佳答案

都是我的错。

我做错了什么:

  1. 创建图表
  2. 隐藏包含不对应图表的div 选定的图表选项卡
  3. 触发窗口大小调整
  4. 创建了视觉错误

就我而言,正确的方法是

  1. 创建图表
  2. 触发窗口大小调整
  3. 隐藏包含不对应图表的div 选定的图表选项卡
  4. 所有图表中的视觉效果均正确。

改变顺序就成功了。

关于javascript - Highstock 视觉失真多个图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33506240/

相关文章:

javascript - 如何制作透明边框 Highcharts 饼图

javascript - 如何使用 jQuery 手动滚动 div?

javascript - 让 NavDropdown 内的 MenuItem 有一个链接

reactjs - 在 React 中使用动态输入绘制函数

javascript - Onclick 用条形图中的新值重新绘制图表

javascript - 如何在 Highcharts 中的 y 轴上显示持续时间

javascript - Extjs 4 如何在没有 doComponentLayout 的情况下隐藏/显示组合框字段上的触发器?

javascript - 如何捕获表格中的按钮是否被单击

javascript - 如何将标签放置在拆分包装气泡图上的系列旁边?

java - android 图表引擎中曲线下的着色区域