【问题标题】:Highcharts adding labels/columns with no dataHighcharts 添加没有数据的标签/列
【发布时间】:2018-04-24 12:20:40
【问题描述】:

我在使用没有附加数据的 Highcharts 绘图点时遇到问题。该图表是带有向下钻取的柱形图,在顶层显示每周平均“时间”,向下钻取显示所选周内每个案例的实际值。

我的问题是:当我深入到某一周时,如果它们存在于两个现有案例 ID 之间,则不存在的案例仍会显示在图表上。例如。

考虑第 6 周传递的数据:[[272, 25.07][297, 500.54]],只存在两种情况:272 和 297。但是,Highcharts 给了我这个:

https://i.stack.imgur.com/MpABB.png

这是图表本身的代码:

                Highcharts.chart('DrilldownChart', {
                chart: {
                    type: 'column'
                },
                title: {
                    text: ''
                },
                subtitle: {
                    text: ''
                },
                xAxis: {
                    type: "",
                    labels: {
                        rotation: 90
                    },
                },
                yAxis: {
                    title: {
                        text: ''
                    }

                },
                exporting: {
                    enabled: false
                },
                credits: {
                    enabled: false
                },
                legend: {
                    enabled: false
                },
                plotOptions: {
                    column: {
                        minPointLength: 0
                    },
                    series: {
                        borderWidth: 0,
                        dataLabels: {
                            enabled: false,
                            format: '{point.y:.1f}',
                            rotation: 270
                        }
                    }
                },
                tooltip: {
                    pointFormat: '<span style="color:{#000}"></span>{point.y:.2f}<br/>'
                },

                series: MainDataArray,
                drilldown: {
                    series: DrilldownDataArray,
                }

            });

有谁知道如何阻止它在具有实际数据的点之间绘制标签/列?

谢谢!

【问题讨论】:

  • 你能举个例子吗(例如:jsfiddle),它会更容易帮助你:)

标签: highcharts


【解决方案1】:

您只需要将数组中的x 值转换为String 类型,然后它们将被视为类别名称而不是类别索引。为了转换它,你可以像这样使用Array.map()函数:

var drilldownSeries = [{
    id: 'One',
    data: [[272, 25.07], [297, 500.54]].map(elem => {
        return [elem[0].toString(), elem[1]]
    })
  }]

但是,在此之前请确保您的xAxis.type 设置为'category',因为我注意到在您的代码中有一个空字符串分配给type 字段。

这里是展示如何实现描述效果的示例: https://jsfiddle.net/8h03urrr/

【讨论】:

  • 谢谢你,这行得通!然而,在我将 caseID 更改为字符串之后,出现了一个问题:imgur.com/h35QBrt 这些类别只是与我获得数据的实际周数相对应的 caseID(数据数组有 17 个条目/周)。然而,这只发生在第 12 周,所以我想这可能是因为这周的数据比其他周多得多?第 12 周有 97 个条目,如下所示:imgur.com/RJd0AZV 其他周最多有 50 个条目。
  • 那么,你能给我提供一些最小的工作示例吗?
  • 当然,我打印出数组并将它们添加到这里的小提琴中:jsfiddle.net/xxnL32tp/6 我正在谈论的问题发生在第 12 周,图表开始使用数组索引而不是案例 ID索引 17 及以后的标签。第二大数组,第 14 周,不会导致此类问题。
  • 感谢您提供的演示。这是包含许多类别和向下钻取模块的图表最常遇到的问题。您需要将plotOptions.series.cropThreshold 设置为大于钻取系列中的点的数字。以下是 GitHub 上报告问题的链接:github.com/highcharts/highcharts/issues/5857,以及固定示例:jsfiddle.net/hygn8xe9
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多