Расчет процентного значения для каждой серии в старших чартах - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь вычислить% значений для каждой серии, мне удалось найти такую ​​функцию, как

 formatter:function() {
                    var pcnt = (this.y / dataSum) * 100;
                    return Highcharts.numberFormat(pcnt) + '%';
                }

Но меня смущает то, как я могу динамически создать эту функцию, чтобы ее можно было применять ко всемпредоставленный объект серии

Акцент на dataSum из функции выше.Я попробовал прибегнуть к помощи на тот случай, если старшие диаграммы уже предоставили какое-то решение, которое они имеют в своей документации, но, к сожалению, я ничего не нашел, единственное, что я нашел, - это конкатенировать уже предоставленное значение с + '%', и это намного превышает реальное значение процентаэтой конкретной серии

$(function() {
  var chart = new Highcharts.Chart(



  {
  "meta": {
    "drilldownEnabled": false
  },
  "chart": {
  renderTo:"container",
    "additionalData": {
      "dateTime": false,
      "datetype": "string",
      "cliccable": true,
      "drillable": false,
      "drillableChart": false,
      "isCockpit": true,
      "categoryColumn": "city",
      "categoryGroupBy": "",
      "categoryGroupByNamens": "",
      "categoryName": "city",
      "categoryOrderColumn": "",
      "categoryOrderType": "",
      "categoryStacked": "",
      "categoryStackedType": ""
    },
    "zoomType": "xy",
    "panning": true,
    "type": "column",
    "options3d": {
      "enabled": false,
      "alpha": 25,
      "beta": 15,
      "depth": 50,
      "viewDistance": 25
    },
    "backgroundColor": "#FFFFFF",
    "heightDimType": "pixels",
    "widthDimType": "pixels",
    "plotBackgroundColor": null,
    "plotBorderWidth": null,
    "plotShadow": false,
    "borderColor": "#FFFFFF",
    "style": {
      "backgroundColor": "#FFFFFF",
      "fontFamily": "",
      "fontWeight": "",
      "fontSize": ""
    },
    "events": {}
  },
  "colors": [
    "#7cb5ec",
    "#434348",
    "#90ed7d",
    "#f7a35c",
    "#8085e9",
    "#f15c80",
    "#e4d354",
    "#2b908f",
    "#f45b5b",
    "#91e8e1"
  ],
  "title": {
    "text": "",
    "style": {
      "align": "",
      "color": "",
      "fontFamily": "",
      "fontSize": "",
      "fontWeight": ""
    }
  },
  "legend": {
    "itemDistance": 0,
    "symbolPadding": 25,
    "enabled": false
  },
  "xAxis": [
    {
      "plotBands": [
        {
          "label": {
            "text": "",
            "align": "center"
          },
          "color": "",
          "from": 0,
          "to": 0
        }
      ],
      "plotLines": [
        {
          "label": {
            "text": "",
            "align": "center"
          },
          "color": "",
          "dashStyle": "",
          "value": 0,
          "width": 0
        }
      ],
      "type": "category",
      "id": 0,
      "title": {
        "customTitle": false,
        "text": "city",
        "style": {}
      },
      "labels": {
        "style": {
          "color": "",
          "fontFamily": "",
          "fontSize": "",
          "fontWeight": ""
        },
        "align": ""
      }
    }
  ],
  "yAxis": [
    {
      "plotBands": [
        {
          "label": {
            "text": "",
            "align": "center"
          },
          "color": "",
          "from": 0,
          "to": 0
        }
      ],
      "plotLines": [
        {
          "label": {
            "text": "",
            "align": "center"
          },
          "color": "",
          "dashStyle": "",
          "value": 0,
          "width": 0,
          "zIndex": 1
        }
      ],
      "title": {
        "text": "",
        "customTitle": false,
        "style": {
          "color": "",
          "fontFamily": "",
          "fontWeight": "",
          "fontSize": ""
        }
      },
      "labels": {
        "style": {
          "color": "",
          "fontFamily": "",
          "fontSize": "",
          "fontWeight": ""
        },
        "align": ""
      },
      "gridLineDashStyle": "$convertedTypeline",
      "minorGridLineDashStyle": "$convertedMinorTpeline"
    }
  ],
  "series": [
    {
      "name": "total_children",
      "dataLabels": {

        "style": {
          "color": "",
          "fontFamily": "",
          "fontWeight": "",
          "fontSize": "",
          "fontStyle": ""
        },
        "enabled": true,
        "labelFormat": "{y:,.2f}"
      },
      "data": [

        {
          "drilldown": false,
          "y": 271,
          "name": "Pomona",
          "datetype": "string"
        },
        {
          "drilldown": false,
          "y": 237,
          "name": "Port Hammond",
          "datetype": "string"
        },
        {
          "drilldown": false,
          "y": 205,
          "name": "Port Orchard",
          "datetype": "string"
        },
        {
          "drilldown": false,
          "y": 239,
          "name": "Portland",
          "datetype": "string"
        },
        {
          "drilldown": false,
          "y": 265,
          "name": "Puyallup",
          "datetype": "string"
        },

      ],
      "selected": true,
      "tooltip": {
        "valueDecimals": 2,
        "scaleFactor": "empty",
        "ttBackColor": "#FCFFC5"
      },
      "yAxis": 0
    },
    {
      "name": "num_cars_owned",
      "dataLabels": {
        "style": {
          "color": "",
          "fontFamily": "",
          "fontWeight": "",
          "fontSize": "",
          "fontStyle": ""
        },
        "enabled": true,
        "labelFormat": "{y:,.2f}"
      },
      "data": [
        {
          "drilldown": false,
          "y": 228,
          "name": "Acapulco",
          "datetype": "string"
        },
        {
          "drilldown": false,
          "y": 189,
          "name": "Albany",
          "datetype": "string"
        },
        {
          "drilldown": false,
          "y": 212,
          "name": "Altadena",
          "datetype": "string"
        },
        {
          "drilldown": false,
          "y": 219,
          "name": "Anacortes",
          "datetype": "string"
        },
        {
          "drilldown": false,
          "y": 231,
          "name": "Arcadia",
          "datetype": "string"
        },

      ],
      "selected": true,
      "tooltip": {
        "valueDecimals": 2,
        "scaleFactor": "empty",
        "ttBackColor": "#FCFFC5"
      },
      "yAxis": 0
    }
  ],
  "tooltip": {
    "borderWidth": 0,
    "borderRadius": 0,
    "followTouchMove": false,
    "followPointer": true,
    "useHTML": true,
    "backgroundColor": null,
    "style": {
      "padding": 0
    }
  },
  "lang": {
    "noData": ""
  },
  "noData": {
    "style": {
      "fontFamily": "",
      "fontSize": "",
      "color": ""
    },
    "position": {
      "align": "center",
      "verticalAlign": "middle"
    }
  },
  "credits": {
    "enabled": false
  },
  "plotOptions": {
    "line": {
      "marker": {
        "symbol": "circle",
        "lineWidth": 2
      }
    },
    "series": {
      "events": {},
      "showCheckbox": true,
      "cursor": "pointer",
      "point": {
        "events": {}
      },
      "dataLabels": {
        "allowOverlap": true
      },
      "turboThreshold": 2000
    }
  }
}










  );
});

Кто-нибудь когда-нибудь выходил на решение, которое в любом случае предоставляет% значений рядов?Я пытаюсь вычислить% от общего количества детей и% серии num_cars_owned, поскольку они являются отдельными объектами массива серии.

Пример кода можно найти по ссылке ЗДЕСЬ http://jsfiddle.net/JeLrb/538/

1 Ответ

0 голосов
/ 27 декабря 2018

Вам необходимо вычислить dataSum значение:

        tooltip: {
            ...,
            formatter: function() {
                var dataSum = 0,
                    pcnt;

                this.series.points.forEach(function(point) {
                    dataSum += point.y;
                });

                pcnt = (this.y / dataSum) * 100;

                return Highcharts.numberFormat(pcnt) + '%';
            }
        }

Демонстрационная версия: http://jsfiddle.net/BlackLabel/9tbynahj/

API Reference: https://api.highcharts.com/highcharts/tooltip

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...