Highcharts 带线条的堆叠柱形条

Posted

技术标签:

【中文标题】Highcharts 带线条的堆叠柱形条【英文标题】:Highcharts stacked column bar with line 【发布时间】:2014-03-18 05:54:26 【问题描述】:

我想要这个堆积柱形图 Demo column stacked 与此 Basic Column with line。我想要的是在这个堆积柱形图中有一条线。

注意:我发现这个示例已经存在于 *** 中,Stacked bar with line,但不能真正使它成为一个带行的堆叠列。

我正在使用 HighCharts .Net 插件,我的堆叠条代码是:

Highcharts chart = new Highcharts("chart");

    chart.SetSeries(new[]
                
                    new Series  Name = "Title1", Data = new Data(data1) ,
                    new Series  Name = "Title2", Data = new Data(data2) ,
                    new Series  Name = "Title3", Data = new Data(data3) ,
                    new Series  Name = "Title4", Data = new Data(data4) 
                );

    chart.InitChart(new Chart DefaultSeriesType = ChartTypes.Column);
    chart.SetTitle(new TitleText = "Graph title" );
    chart.SetXAxis(new XAxis  Categories = xaxis );
    chart.SetYAxis(new YAxis
            
                Min = 0,
                Title = new YAxisTitle  Text = "Total hit" ,
                StackLabels = new YAxisStackLabels
                
                    Enabled = true,
                    Style = "fontWeight: 'bold', color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'"
                
            );
    chart.SetLegend(new Legend
            
                Layout = Layouts.Horizontal,
                Align = HorizontalAligns.Right,
                VerticalAlign = VerticalAligns.Top,
                X = -100,
                Y = 20,
                Floating = true,
                BackgroundColor = new BackColorOrGradient(ColorTranslator.Fromhtml("#FFFFFF")),
                BorderColor = ColorTranslator.FromHtml("#CCC"),
                BorderWidth = 1,
                Shadow = false
            );
    chart.SetPlotOptions(new PlotOptions
            
                Column = new PlotOptionsColumn
                
                    Stacking = Stackings.Normal,
                    DataLabels = new PlotOptionsColumnDataLabels
                    
                        Enabled = true,
                        Color = Color.White
                    
                
            );
    ltrChart.Text = chart.ToHtmlString();

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

这是一个纯 JS 的解决方案。

HTML:

<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<div id="container" style="min-width: 310px; height: 500px; margin: 0 auto"></div>

JS:

$(function () 
  $('#container').highcharts(
    chart: 
        zoomType: 'xy'
    ,
    colors: ['#7cb5ec', '#91e8e1', '#90ed7d'],

    title: 
        text: 'Something '
    ,
    subtitle: 
        text: 'subsomething'
    ,
    xAxis: [
        categories: ['1/1','2/1','3/1','4/1', '5/1', '6/1','7/1','8/1','9/1','10/1','11/1', '12/1', '13/1', '14/1', '15/1']
                    ],
    yAxis: [ // Primary yAxis
        labels: 
            format: 'value %',
            style: 
                color: Highcharts.getOptions().colors[1]
            
        ,
        min: 0,
        max:100,
        title: 
            text: 'Percent',
            style: 
                color: Highcharts.getOptions().colors[1]
            
        
    ,  // Secondary yAxis
        title: 
            text: '',
            style: 
                color: Highcharts.getOptions().colors[0]
            
        ,
        min: 0,
        max: 100,
        labels: 
            format: 'value %',
            style: 
                color: Highcharts.getOptions().colors[0],
                display:'none'
            
        ,
        opposite: true
    ],
    tooltip: 
        shared: true
    ,
    legend: 
        layout: 'vertical',
        align: 'center',
        x: -0,
        verticalAlign: 'top',
        y: 400,
        floating: true,
        backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
    ,
    plotOptions: 
        column: 
            stacking: 'percent'
        
    ,
    series: [
        
        name: 'suff1',
        type: 'column',

        yAxis: 1,
        data: [20, 25, 10,30,80, 20, 25, 10,30,80, 20, 25, 10,30,80],
        tooltip: 
            valueSuffix: ' %'
        

    , 
      
          name: 'suff2',
        type: 'column',

        yAxis: 1,
       tooltip: 
            valueSuffix: ' %'
        ,
        data: [30, 50, 30,30,10, 30, 50, 30,30,10, 30, 50, 30,30,10]
    , 
        name: 'suff3',
        yAxis: 1,
        type: 'column',
        tooltip: 
            valueSuffix: ' %'
        ,
        data: [50,25, 60, 40, 10, 50,25, 60, 40, 10, 50,25, 60, 40, 10]
    ,
      
        name: 'NS',
        type: 'spline',

        data: [45,55,74,85,81, 45,55,74,85,81, 45,55,74,85,81],
        tooltip: 
            valueSuffix: '%'
        
    ]
 );
 );

我用这个例子做了一个 JS fiddle。你可以查看here

【讨论】:

【参考方案2】:

我不敢相信它这么简单,我只是在试验代码,然后它就被解决了。我所要做的就是添加一个新系列并在每个系列中指定类型。

   chart.SetSeries(new[]
            
                new Series  Name = "Title1", Data = new Data(data1), Type = ChartTypes.Column ,
                new Series  Name = "Title2", Data = new Data(data2), Type = ChartTypes.Column ,
                new Series  Name = "Title3", Data = new Data(data3), Type = ChartTypes.Column ,
                new Series  Name = "Title4", Data = new Data(data4), Type = ChartTypes.Column 
                new Series  Name = "Title5", Data = new Data(data5), Type = ChartTypes.Line 
            );

【讨论】:

以上是关于Highcharts 带线条的堆叠柱形条的主要内容,如果未能解决你的问题,请参考以下文章

highcharts,设置堆积柱形图的最小高度?

在Highcharts中为堆叠列图中的列禁用堆栈标签

在 highcharts 中计算最小 y 轴值

如何用Highcharts制作柱形图

highcharts,设置堆积柱形图的最小高度?

使用 php 和 Ajax 的 Highcharts 柱形图