Graph 如何使用amchart堆叠图表?

Graph 如何使用amchart堆叠图表?,graph,stack,scrollbar,amcharts,Graph,Stack,Scrollbar,Amcharts,是否可以在一个图表中堆叠2个或多个图形?使用相同的滚动条/图表光标 我在live编辑器中尝试过,但没有找到任何选项来实现这一点 以下是som图片说明: 目前,我有以下图表: 但我想要一个这样的图表: 谢谢你的帮助:)为了运动,我试着实现它。好消息——有可能:) 首先,你需要准备两张图表 第一张图表 已启用滚动条 图表光标已启用 类别轴隐藏 禁用图例 底边距:0 第二张图表 滚动条已禁用 图表光标已启用 类别轴已启用 启用图例 上页边距:0 这将创建两个图表,“粘合”在一起,就像在实体模型

是否可以在一个图表中堆叠2个或多个图形?使用相同的滚动条/图表光标

我在live编辑器中尝试过,但没有找到任何选项来实现这一点

以下是som图片说明:

目前,我有以下图表:

但我想要一个这样的图表:


谢谢你的帮助:)

为了运动,我试着实现它。好消息——有可能:)

首先,你需要准备两张图表 第一张图表

  • 已启用滚动条
  • 图表光标已启用
  • 类别轴隐藏
  • 禁用图例
  • 底边距:0
第二张图表

  • 滚动条已禁用
  • 图表光标已启用
  • 类别轴已启用
  • 启用图例
  • 上页边距:0
这将创建两个图表,“粘合”在一起,就像在实体模型中一样:

同步图表 它们仍然像两个独立的图表一样独立运作。我们必须同步它们:

  • 光标
  • 传奇
  • 缩放/平移
这就是代码的作用:

/**
 * Use events to sync up cursors and zooms
 */
for ( var x = 0; x < AmCharts.charts.length; x++ ) {

  // use "changed" event to track cursor movement on all charts
  // place the cursor on other charts on the same index
  AmCharts.charts[ x ].addListener( "changed", function( event ) {

    // find which category is currently being rolled over
    var category = event.chart.dataProvider[ event.index ][ event.chart.categoryField ];

    // cycle through all available charts and place the cursor at
    // the same category
    for ( var i = 0; i < AmCharts.charts.length; i++ ) {
      if ( event.chart !== AmCharts.charts[ i ] ) {
        AmCharts.charts[ i ].chartCursor.showCursorAt( category );
      }
    }

  } );

  // use "zoomed" event to track zooms/pans so we can apply
  // the same zoom across other charts
  AmCharts.charts[ x ].addListener( "zoomed", function( zoomEvent ) {

    // cycle through all available charts and apply same zoom
    for ( var i = 0; i < AmCharts.charts.length; i++ ) {
      if ( zoomEvent.chart !== AmCharts.charts[ i ] && ( AmCharts.charts[ i ].startIndex != zoomEvent.startIndex || AmCharts.charts[ i ].endIndex != zoomEvent.endIndex ) ) {
        AmCharts.charts[ i ].zoomToIndexes( zoomEvent.startIndex, zoomEvent.endIndex );
      }
    }

  } );

}

/**
 * Use the last chart to display legend
 * We will collect graphs from other charts and mirror them on
 * the last chart.
 */
var lastChart = AmCharts.charts[ AmCharts.charts.length - 1 ];
for ( var x = 0; x < ( AmCharts.charts.length - 1 ); x++ ) {

  // add graphs
  for ( var g = 0; g < AmCharts.charts[ x ].graphs.length; g++ ) {

    // create the related graph
    var graph = new AmCharts.AmGraph();
    graph.lineAlpha = 0;
    graph.lineColor = AmCharts.charts[ x ].graphs[ g ].lineColor;
    graph.relatedGraph = AmCharts.charts[ x ].graphs[ g ];
    graph.valueField = "value_" + x + "_" + g;
    graph.showBalloon = false;
    graph.includeInMinMax = false;
    graph.title = AmCharts.charts[ x ].graphs[ g ].title;
    lastChart.addGraph( graph );

    // mirror data for rollovers
    for ( var i = 0; i < lastChart.dataProvider.length; i++ ) {
      lastChart.dataProvider[ i ][ graph.valueField ] = AmCharts.charts[ x ].dataProvider[ i ][ AmCharts.charts[ x ].graphs[ g ].valueField ];
    }

  }

}

/**
 * Add events to the legend of last chart so we can toggle
 * graphs of the other charts
 */
lastChart.addListener( "init", function() {

  // hide graph
  lastChart.legend.addListener( "hideItem", function( event ) {
    if ( event.dataItem.relatedGraph !== undefined ) {
      event.dataItem.relatedGraph.chart.hideGraph( event.dataItem.relatedGraph );
    }
  } );

  // show graph
  lastChart.legend.addListener( "showItem", function( event ) {
    if ( event.dataItem.relatedGraph !== undefined ) {
      event.dataItem.relatedGraph.chart.showGraph( event.dataItem.relatedGraph );
    }
  } );
} );


您是否考虑过使用股票图表进行此操作?它支持多个图表(面板),并自动相互同步以及共享同一滚动条。请注意,它是针对基于日期的数据的,所以如果您针对的是基于任意系列的数据,股票图表可能不起作用。是的,我做到了。但是时间格式有问题。我有一个基于毫秒的时间戳,而图表无法“反看穿”它。我发现了这个:但这对我来说不起作用。。。但给我一点时间,我再检查一下……好的,你是对的。我将序列图和股票图中的设置混合在一起。要启用正确的数据格式,必须设置以下选项:'categoryAXESettings:{minPeriod:'fff',groupToPeriods:['fff']//specifyperiod grouping},'worksperfect。唯一不能正常工作的是打开/关闭图形的功能。它只适用于最后一个图形。你的意思是,如果每个图表“面板”有多个图形?