2016-04-25 75 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數據不具有否定值

這可能是因爲該庫的對數功能被編碼的方式。