Как отображать метки за пределами границы круговой диаграммы?

Круговая диаграмма

Я использовал ng2-диаграммы (chart.js) в angular. Мне нужно, чтобы метки выходили за границы круговой диаграммы, как на прикрепленном изображении. На данный момент я отключил атрибут lengend. Я задаю цвета меток и фона через @Input(). Я мог бы разместить метки выше / ниже, изменив атрибут pieChartLegend, но они мне нужны за пределами границ. Положение границ будет динамически изменяться в зависимости от ввода, но метка за пределами границы будет статической.

public pieChartOptions: ChartOptions = {
  responsive: true,
  legend: {
    display: false
  }
};

chartlabels: Label[] = [];
chartdata: SingleDataSet;

public chartType: ChartType = 'pie';
// public pieChartLegend = {display:true,position:'bottom'};
// public pieChartPlugins = [];

public chartcolors: Array<any> = [
  {
    backgroundColor: "",
    borderWidth: 1,
  }
];
<canvas baseChart 
    [data]="chartdata" 
    [labels]="chartlabels" 
    [chartType]="chartType"
    [colors]="chartcolors"
    [options]="pieChartOptions">
</canvas>

person Manoj kumar    schedule 18.10.2019    source источник
comment
Могу посоветовать отключить метки chart.js и создать свои. (Какой-то алгоритм поворота div с вашими пользовательскими метками).   -  person Dmitriy Ivanko    schedule 18.10.2019
comment
есть какие-нибудь плагины для этого?   -  person Manoj kumar    schedule 18.10.2019
comment
Думаю, нет, но надеюсь, что здесь нет очень сложной логики, особенно если у вас уже есть все проценты с вывода компонента ng2-chart. Это пример вращения div: getbootstrap.com/docs/4.3/examples/product (см. html и css код этого сайта)   -  person Dmitriy Ivanko    schedule 18.10.2019
comment
Можете ли вы написать пример с круговой диаграммой? Так будет полезнее.   -  person Manoj kumar    schedule 21.10.2019
comment
Добавление div вокруг круговой диаграммы и его вращение также приведет к вращению круговой диаграммы внутри нее.   -  person Manoj kumar    schedule 21.10.2019


Ответы (2)


Это можно сделать с помощью плагина «chartjs-plugin-labels». В этом плагине есть возможность отображать метку за пределами сектора круговой диаграммы. Расчет выполняется так, чтобы метка отображалась в центре сектора круговой диаграммы (за пределами диаграммы). Я изменил расчет, чтобы отобразить метку в конце секции круговой диаграммы.

Ссылка для подключаемого модуля

person Manoj kumar    schedule 22.10.2019

Этот плагин chartjs-plugin-piechart-outlabels работал у меня.

Шаг 1. npm установите его https://www.npmjs.com/package/chartjs-plugin-piechart-outlabels.

Шаг 2: Если вы используете фреймворк Angular, импортируйте его в свой модуль компонентов следующим образом import chartjs-plugin-piechart-outlabels.

Шаг 3. Настройте как требуется https://piechart-outlabels.netlify.app/options

person sai amar    schedule 22.05.2020
comment
Не могли бы вы подробнее рассказать о шаге №2? Я попытался импортировать в свой module.ts, но не знал, что оттуда импортировать. - person Josh L; 27.04.2021