代码之家  ›  专栏  ›  技术社区  ›  ii iml0sto1

amcharts按天和分钟分组

  •  1
  • ii iml0sto1  · 技术社区  · 8 年前

    我的处境是,人们可以在许多不同的时间间隔之间进行选择,比如

    • 1d(5分钟数据)

    如果我把这个放进去 "groupToPeriods": ["DD"] 当它是一年数据时,它将完美地显示日期。

    如果我把这个放进去 "groupToPeriods": ["NN"]

    天 enter image description here

    分钟 enter image description here

    我试过了 "groupToPeriods": ["DD-NN"] "groupToPeriods": ["DD", "NN"] 没有运气, here 和 here 是我读过的一些关于分组和日期格式的文档。

    var redaw = false;
    var logarithmic = false;
    var interval = "all";
    
    function createChart1(chartData) {
      var chart = AmCharts.makeChart("chartdivs", {
        "type": "stock",
        "theme": "light",
        "recalculateToPercents": "never",
        "dataSets": [{
          "title": "$",
          "fieldMappings": [{
            "fromField": "value",
            "toField": "value"
          }, {
            "fromField": "volume",
            "toField": "volume"
          }],
          "dataProvider": chartData,
          "categoryField": "date",
          "color": "#2e4259",
          "fillAlphas": 0.5
        }],
        "panels": [{
          "title": "Fiat",
          "showCategoryAxis": false,
          "percentHeight": 70,
          "color": "#fff",
          "recalculateToPercents": "never",
          "stockGraphs": [{
            "id": "g1",
            "valueField": "value",
            "comparable": true,
            "lineThickness": "3px",
            "compareField": "value",
            "balloonText": "[[title]]:<b>[[value]]</b>",
            "compareGraphBalloonText": "[[title]]:<b>[[value]]</b>",
            "color": "#fff"
          }]
        }, {
          "title": "Volume",
          "percentHeight": 30,
          "color": "#fff",
          "stockGraphs": [{
            "valueField": "volume",
            "type": "line",
            "showBalloon": false,
            "fillAlphas": 0.5
          }],
          "stockLegend": {
            "periodValueTextRegular": "[[value.close]]",
            "marginRight": 10,
            "color": "#fff"
          }
        }],
    
        "panelsSettings": {
          //    "color": "#fff",
          "plotAreaBorderAlpha": 0.5,
          "plotAreaBorderColor": "#2e4259",
          "marginLeft": 30,
          "marginRight": 30,
          "marginTop": 5,
          "marginBottom": 30
        },
    
        "categoryAxesSettings": {
          "equalSpacing": true,
          "gridColor": "#2e4259",
          "gridAlpha": 0.5,
          "maxSeries": 1,
          //////////////////////////////////// HERE IS THE PROBLEM ////////////////////////////////////
          "groupToPeriods": ["DD-NN"]
        },
    
        "valueAxesSettings": {
          "logarithmic": logarithmic,
          "gridColor": "#2e4259",
          "gridAlpha": 0.5,
          "inside": false,
          "showLastLabel": false
        },
        "chartScrollbarSettings": {
          "graph": "g1",
          //            "graphFillColor": "#000",
          "backgroundColor": "transparent",
          "gridAlpha": 0,
          "graphFillAlpha": 0.8,
          "graphLineAlpha": 0,
          "graphLineColor": "#fff",
          "graphType": "line",
          "updateOnReleaseOnly": false,
          "graphFillColor": "#2e4259",
          "selectedBackgroundColor": "#2e4259",
          "selectedGraphFillAlpha": 0,
          "selectedGraphFillColor": "#2e4259"
        },
        "chartCursorSettings": {
          "valueBalloonsEnabled": true,
          "fullWidth": false,
          "cursorAlpha": 0.5,
          "valueLineBalloonEnabled": false,
          "valueLineEnabled": false,
          "cursorColor": "#000"
        }
      });
    
      redaw === true ? chart.validateData() : redaw = true;
    }
    
    function generateChartData() {
      var chartData1 = [];
      // current date
      var firstDate = new Date();
      // now set 500 minutes back
      firstDate.setMinutes(firstDate.getDate() - 1000);
    
    
      var CSRFToken = document.getElementById("CSRFToken").value;
      var parameters = "CSRFToken=" + CSRFToken + "&interval=" + interval + "&id=" + 1;
      console.log("INTERVAL: " + interval);
      ajax("/pages/ajax/request-chart-data.php", parameters, "POST", false, function(results) {
        if (results) {
          var jsonObj = JSON.parse(results);
          console.log("JSON OBJ");
          console.log(jsonObj);
          for (var i in jsonObj) {
    
            var newDate = new Date(jsonObj[i].date);
            chartData1.push({
              "date": newDate,
              "value": jsonObj[i].price,
              "volume": jsonObj[i].volume
            });
          }
          createChart1(chartData1);
        } else {
          console.log("NO RESULTS");
        }
      });
    }
    generateChartData();
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   xorspark    8 年前

    不,这不可能。 groupToPeriods maxSeries 按升序设置为period;以默认值为例,-first以秒开始( ss ),然后10秒( 10ss ),30秒( 30ss mm ),10分钟( 10mm 30mm )然后几天( DD ),周( WW ),个月( MM YYYY ). 你不能在一个分组中组合多个句点,所以在你的例子中,你的句点非常小 最大系列 设置时,将其设置为要基于数据分组的最小时段。还要注意的是没有 NN 句号-是的 minPeriod 此外,它还采用单个句点类型,以确保数据也正确呈现。

    推荐文章