Highcharts меняют цвет кусочков пирога

Обновлять:

Мне удалось показать процент, а также легенду. Но пока не умеет менять цвета.

chart: {
        type: 'pie',
        styledMode: true
    },
    tooltip: {
         pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
    },
    theme: {
          colors: [
                    'green',
                    'red',
                    'fushcia'
                  ]
    },
    plotOptions: {
        pie: {
          colors: [
                    'green',
                    'red',
                    'fushcia'
                  ],
                     allowPointSelect: true,
                     cursor: 'pointer',
                     dataLabels:  {
                     enabled: false
                     },
                   showInLegend: true
           }

    },
    title: {
        text: 'Rundeck Jobs Stats'
    },
    series: [
        {
            data: chartData(table)
        }

Исходное сообщение:

У меня есть круговая диаграмма, созданная из таблицы HTML с помощью DataTables. Я смотрю на один столбец, СТАТУС, который показывает либо успешное, либо неудачное, либо прерванное выполнение. Диаграмма подсчитывает количество вхождений каждого из них и рисует круговую диаграмму.

Я бы хотел, чтобы круговая диаграмма была зеленой для успехов, красной для неудач и фиолетовой для прерванных проектов.

Я также хотел бы, чтобы кусочки показывали соответствующие проценты от пирога.

у меня есть код для создания диаграммы, он взят непосредственно из примера https://datatables.net/examples/api/highcharts.html

    // Create DataTable
const table = new DataTable('#example');
 
// Create chart
const chart = Highcharts.chart('demo-output', {
    chart: {
        type: 'pie',
        styledMode: true
    },
    title: {
        text: 'Rundeck Jobs Stats'
    },
    series: [
        {
            data: chartData(table)
        }
    ]
});
 
// On each draw, update the data in the chart
table.on('draw', function () {
    chart.series[0].setData(chartData(table));
});
 
function chartData(table) {
    var counts = {};
 
    // Count the number of entries for each position
    table
        .column(3, { search: 'applied' })
        .data()
        .each(function (val) {
            if (counts[val]) {
                counts[val] += 1;
            }
            else {
                counts[val] = 1;
            }
        });
 
    return Object.entries(counts).map((e) => ({
        name: e[0],
        y: e[1]
    }));
}

Я просмотрел несколько постов и попытался добавить красок в серию, но пока безрезультатно.

заранее спасибо

р

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это потому, что вы используете styledMode:

styledMode: логический

Применять ли стильный режим. В стилизованном режиме презентация отсутствует. атрибуты или CSS применяются к диаграмме SVG. Вместо этого правила CSS требуется для стилизации диаграммы. Таблица стилей по умолчанию доступна по адресу https://code.highcharts.com/css/highcharts.css.

Вы можете отключить его, как показано ниже, или оформить диаграмму с помощью CSS.

chart: {
  ...,
  styledMode: false
}

Живой пример: https://jsfiddle.net/BlackLabel/hm5nb2o4/

Ссылка на API: https://api.highcharts.com/highcharts/chart.styledMode

Документы: https://www.highcharts.com/docs/chart-design-and-style/style-by-css

Спасибо за ответ и ссылки. Я скопировал и вставил ваш код для создания диаграммы на свою страницу. Я вижу, что в легенде используются эти цвета, но на графике по какой-то причине нет, хотя в вашем примере я вижу, что на графике используются эти цвета. Он использует пастели по умолчанию. Вы изменили CSS или что-то в этом роде? . Также замечает, что любое значение, находящееся в первой строке, получает этот цвет... поэтому успех не всегда зеленый и т. д.... Все еще исследую

Roger McCarrick 11.10.2023 18:24

Только что заметил, что вы не загружаете CSS highcharts. Я удалил это, и теперь моя круговая диаграмма имеет цвета. Большое спасибо за это. Я все еще вижу, что цвета не привязаны к данным. Попытка получить зеленый цвет всегда увенчалась успехом, красный — неудачей и т. д.

Roger McCarrick 12.10.2023 02:32

Привет @ Роджер МакКаррик, в этом случае вам нужно установить цвет непосредственно в точках данных. Живой пример: jsfiddle.net/BlackLabel/sk7awrbg API: api.highcharts.com/highcharts/series.pie.data.color

ppotaczek 12.10.2023 10:52

Еще раз спасибо за ответ. Я рассмотрел приведенный вами пример, но он создает новый срез для каждой строки в таблице вместо того, чтобы группировать их по категориям «Успешно», «Не удалось» и «Прервано».

Roger McCarrick 13.10.2023 05:10

Итак, вы хотите иметь три фрагмента, как здесь: jsfiddle.net/BlackLabel/8jLuot3r

ppotaczek 13.10.2023 09:32

Другие вопросы по теме