amcharts对数刻度切换

时间:2016-04-25 16:29:39

标签: jquery amcharts

我的数据有所不同,这意味着某些数据看起来更具可读性,而其他数据则需要对数比例。

我正在尝试通过以下代码绘制堆积区域图

AmCharts.makeChart("amchart-metrics-history-"+tag_id, {
                        "type": "serial",
                        "theme": "dark",
                        "titles": [{
                                "text": "Tag Metrics",
                                "size": 15
                        }],
                        "pathToImages": "/static/img/amcharts/",
                        "legend": {
                            "equalWidths": true,
                            "periodValueText": "",
                            "position": "bottom",
                            "valueAlign": "left",
                            "valueWidth": 100
                        },
                        "dataProvider": data.data,
                        "dataDateFormat": "YYYY-MM-DD HH:NN:SS",
                        "graphs": [{
                            "fillAlphas": 0.6,
                            "lineAlpha": 0.4,
                            "title": "Malware",
                            "valueField": "malware_count",
                            "color": "#fff"
                        }, {
                            "fillAlphas": 0.6,
                            "lineAlpha": 0.4,
                            "title": "Benign",
                            "valueField": "benign_count"
                        }, {
                            "fillAlphas": 0.6,
                            "lineAlpha": 0.4,
                            "title": "Grayware",
                            "valueField": "grayware_count"
                        }],
                        "valueAxes": [{
                            "stackType": "regular",
                            "title": "Sample Count"
                        }],
                        "plotAreaBorderAlpha": 0,
                        "marginTop": 10,
                        "marginLeft": 0,
                        "marginRight":30,
                        "marginBottom": 0,
                        "chartScrollbar": {},
                        "chartCursor": {
                            "cursorAlpha": 0
                        },

                        // X-Axis values
                        "categoryField": "time",
                        "categoryAxis": {
                            "parseDates": true,
                            //"startOnAxis": true,
                            //"axisColor": "#DADADA",
                            //"gridAlpha": 0.07,
                            "title": "Date",
                            "minPeriod": "mm",
                        },
                        "export": {
                            "enabled": false
                         },

                        "zoomControl": {
                            "zoomControlEnabled": true,
                        },

                        // Y-Axis specific
                        "valueAxes": [{
                            "logarithmic": true,
                        }]
                    });

我想要完成的是在切换Y比例后重绘。我一直在尝试使用以下

$("#scale_change_"+tag_id).change(function() {
                        if ( $(this).is(":checked") ) {
                            am_chart.valueAxes[0].logarithmic = true;
                        } else {
                            am_chart.valueAxes[0].logarithmic = false;
                        }
                        am_chart.validateData();
                    });

不幸的是,这不起作用。有人可以说明我应该做的事情而不是切换比例,然后强制重绘吗?理想情况下,堆叠应该在规模变化之间持续......

2 个答案:

答案 0 :(得分:1)

我遇到了完全相同的问题。对数标度对我的所有数据集都不起作用。它适用于某些人,而不适用于其他人。我想出如果你想让一个轴具有对数刻度,你必须确保:

- 轴的数据不具有零值

- 轴的数据没有负值

这可能是因为该库的对数功能被编码的方式。

答案 1 :(得分:0)

这是正确的,因为从数学上讲,您不能拥有零或负数的对数。他们没有意义