2016-04-25 73 views
1

我有不同的数据,这意味着有些数据看起来更具可读性,而其他数据则需要对数刻度。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(); 
        }); 

这不起作用。有人可以阐明我应该做什么,而不是切换规模,然后强制重绘?理想情况下,堆叠应该在尺度变化之间持续...

+0

可以请你提供Jsfiddle吗? –

+0

https://jsfiddle.net/ake2uqqj/2/如果我将默认设置为对数,它也会出现奇怪的现象。 – geudrik

+0

https://jsfiddle.net/ake2uqqj/3/现在尝试 –

回答

0

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

轴-The数据不具有零个值

轴-The数据不具有否定值

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