Как изменить цвет ряда(сгруппированной диаграммы столбцов) только с помощью объекта json(без функции js) на Highchart?

#javascript #json #highcharts #jedox

Вопрос:

На самом деле я работаю с инструментом под названием Jedox, который позволяет мне использовать Highchart.js библиотека для создания диаграммы. Поэтому я пытаюсь сделать простую диаграмму с 2 рядами и 4 столбцами, это сгруппированная столбчатая диаграмма(кластеризованная гистограмма). Я видел на Highchart, что можно изменить цвет ряда с помощью массива «цвета», но когда я его использовал, это не сработало. Почему? Я также пытаюсь использовать colorByPoint, он работает, но это не то, что я хочу, потому что он окрашивает catogeries, но в категориях есть разные серии, и я хочу, чтобы каждая серия имела точный цвет. Как я могу это сделать ?

Прежде чем вы увидите код, вот некоторая точность: я поставил «неопределенный» в атрибуте цвета, потому что удалить эти атрибуты невозможно, поэтому я ввел их в значение по умолчанию. Обычно, когда значение установлено в «неопределенное», цвет соответствует одному из цветов в массиве «цвета».

Одна важная вещь, которую вы должны знать, прежде чем помогать мне : я не могу использовать JS, я могу использовать только JSON, вот и все.

Вот мой код:(это просто json)

 "chart": {
    "type": "column",
    "zoomType": "xy",
    "borderRadius": 0,
    "events": {},
    "height": 300,
    "width": 400,
    "backgroundColor": "#FFFFFF",
    "borderWidth": 1,
    "borderColor": "#D8D8D8",
    "plotBackgroundColor": null,
    "plotBorderWidth": 0,
    "plotBorderColor": "#000100",
    "spacingTop": 20
  },
  "plotOptions": {
    "series": {
      "minPointLength": 1,
      "dataLabels": {
        "enabled": false,
        "inside": false,
        "rotation": 0,
        "x": 0,
        "y": 0,
        "style": {
          "fontFamily": "Arial",
          "fontSize": 9,
          "color": "#366092",
          "fontWeight": "normal",
          "fontStyle": "regular"
        }
      },
      "cursor": null,
      "point": {
        "events": {}
      }
    }
  },
  "legend": {
    "symbolRadius": 0,
    "backgroundColor": null,
    "borderWidth": 0,
    "borderColor": "#000100",
    "itemStyle": {
      "fontFamily": "Arial",
      "fontWeight": "normal",
      "fontSize": "11px",
      "color": "#445862",
      "fontStyle": ""
    },
    "floating": false,
    "align": "center",
    "verticalAlign": "bottom",
    "layout": "horizontal",
    "reversed": false
  },
  "title": {
    "text": null
  },
  "series": [
    {
      "name": "Expected",
      "data": [
        1,
        5
      ],
      "color": "undefined",
      "id": 0,
      "property": "dcColumnClustered",
      "type": "column",
      "yAxis": 0,
      "zIndex": 2,
      "borderWidth": 0,
      "dataLabels": {
        "enabled": false
      }
    },
    {
      "name": "Current",
      "data": [
        2,
        3
      ],
      "color": "undefined",
      "id": 1,
      "property": "dcColumnClustered",
      "type": "column",
      "yAxis": 0,
      "zIndex": 2,
      "borderWidth": 0,
      "dataLabels": {
        "enabled": false
      }
    }
  ],
  "xAxis": [
    {
      "id": "x_0",
      "axtype": "xAxis",
      "labels": {
        "enabled": true,
        "style": {
          "fontFamily": "Arial",
          "fontWeight": "normal",
          "fontSize": "11px",
          "color": "#445862",
          "fontStyle": ""
        },
        "autoRotation": false
      },
      "categories": [
        "col1",
        "col2"
      ],
      "title": {
        "style": {
          "fontFamily": "Arial",
          "fontWeight": "normal",
          "fontSize": "11px",
          "color": "#445862",
          "fontStyle": ""
        },
        "text": ""
      },
      "tickInterval": null,
      "minorTickInterval": null,
      "gridLineWidth": 0,
      "minorGridLineWidth": 0,
      "reversed": false,
      "reversedStacks": false
    }
  ],
  "yAxis": [
    {
      "id": "y_0",
      "axtype": "yAxis",
      "opposite": false,
      "labels": {
        "enabled": true,
        "style": {
          "fontFamily": "Arial",
          "fontWeight": "normal",
          "fontSize": "11px",
          "color": "#445862",
          "fontStyle": ""
        },
        "autoRotation": false
      },
      "gridLineWidth": 1,
      "gridLineColor": "#D8D8D8",
      "title": {
        "text": "",
        "style": {
          "fontFamily": "Arial",
          "fontWeight": "normal",
          "fontSize": "11px",
          "color": "#445862",
          "fontStyle": ""
        }
      },
      "tickInterval": null,
      "minorTickInterval": null,
      "reversed": false,
      "reversedStacks": true
    }
  ],
  "tooltip": {
    "enabled": true
  },
  "colors": [
    "#FF0000",
    "#0000FF"
  ]
 

Вот моя скрипка
Вот цель, которой я хочу достичь

Ответ №1:

Значение цвета по умолчанию-это undefined , а не строка "undefined" . (Если неопределенное значение не разрешено Jedox, поставьте null вместо него)

     "series": [{
            "color": undefined,
            ...
        },
        {
            "color": undefined,
            ...
        }
    ]
 

Живая демонстрация: https://jsfiddle.net/Черная метка/zocj5a0b/

Ссылка на API: https://api.highcharts.com/highcharts/series.column.color

Комментарии:

1. Вы совершенно правы ! Но я забыл уточнить, что Джедокс отказывается от неопределенного объекта, к сожалению, я не знаю, почему. Поэтому мы должны найти другое решение :/ ! Но большое спасибо, потому что теперь я знаю, почему это невозможно таким образом. Теперь я должен найти хороший способ исправить это.

2. Но jedox допускает нулевое значение, и оно работает с ! 🙂 ! Большое спасибо!! Отредактируйте свой ответ и добавьте «Если неопределенное значение не разрешено в Jedox, вместо него поставьте null», и я проверю ваш ответ