如果配置包含 categoryAxis 属性,为什么我的 amChart 系列图表不会呈现?

Why won't my amChart serial chart render if the config includes the categoryAxis property?

如果我在图表选项中包含 categoryAxis 属性,我的图表将无法正确呈现。 "render properly",我的意思是显示了绘图区域,显示了标题,但呈现了 none 的列。

我正在使用 GrantMStevens amChartsDirective 的 AmCharts 系列图表,因为我的项目是在 Angularjs 中构建的。

Here is a plunk with the categoryAxis commented out. 如果启用该行代码,图表将立即显示此行为。

此图表使用 categoryField 的文本值和 valueField 的数值值。我有另一个图表,它使用 categoryField 的日期值和 valueField 的数值,它工作得很好。

我假设这不是 categoryField 不是导致此问题的日期值这一事实之间存在某种相互作用,但我找不到任何属性组合可以让我在 [= 上设置属性16=]。

这就是我想做的事情:

    categoryAxis: {
        gridAlpha: 0.3,
        gridColor: "GRAY"
    },

有谁知道为什么这不起作用?

这里是 HTML:

<html ng-app="amChartsDirectiveExample">
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>

<div>
    <div ng-controller="amChartsController2" style="height: 400px; width: 600px;">
        <am-chart id="mySecondChart" options="amChartOptions2"></am-chart>
    </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.0/angular.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/amcharts/3.13.0/amcharts.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/amcharts/3.13.0/serial.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/amcharts/3.13.0/themes/light.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/amcharts/3.13.0/themes/chalk.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/amcharts/3.13.0/themes/black.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/amcharts/3.13.0/themes/dark.js"></script>
<script src="https://rawgit.com/ThumbsAlmighty/amCharts-Angular/master/dist/amChartsDirective.js"></script>
<script src="script.js"></script>
<script src="theme.js"></script>
</body>

这里是 JavaScript:

angular.module('amChartsDirectiveExample', ['amChartsDirective'])
.controller('amChartsController2', function($scope) {
    $scope.chartData = [
            {
                "EscalationCount": "2",
                "Area": "One"
            },
            {
                "EscalationCount": "9",
                "Area": "Two"
            },
            {
                "EscalationCount": "5",
                "Area": "Three"
            },
            {
                "EscalationCount": "4",
                "Area": "Four"
            },
            {
                "EscalationCount": "3",
                "Area": "Five"
            }];

    $scope.amChartOptions2 = {
    type: "serial",
    categoryField: "Area",
    startDuration: 1,
    rotate: true,
    theme: "light",
    trendLines: [],
    //categoryAxis: {},  // Uncomment this line to break the chart.
    graphs: [{
        balloonText: "[[title]] for [[category]]: [[value]]",
        fillAlphas: 1,
        id: "AmGraph-1",
        title: "Escalation Volume",
        type: "column",
        valueField: "EscalationCount"
    }],
    guides: [],
    valueAxes: [{
        id: "ValueAxis-1",
        title: "EscalationCount",
    }],
    allLabels: [],
    balloon: [],
    legend: {
        enabled: false
    },
    titles: [{
        id: "Title-1",
        size: 15,
        text: "Lookit me! I rendered the Chart title!"
    }],
    data: $scope.chartData
    };
});

出于某种原因,如果您定义了 categoryAxis,angular 指令默认将 parseDates 设置为 true,如果您的图表不是基于日期的,它会中断。如果您在 categoryAxis 中设置 parseDates: false,它将起作用。

  categoryAxis: {
    parseDates: false,
    gridAlpha: 0.3,
    gridColor: "#d3d3d3"
  },

这是您更新后的内容:http://plnkr.co/edit/TYZdR0KEOAKcbHnGdTfP?p=preview

请注意,我将您的 gridColor 更改为等效的十六进制。虽然命名颜色会起作用,但如果您打算使用导出插件,则需要将颜色设置为十六进制字符串。