#javascript #css #svg #chartist.js
#javascript #css #svg #chartist.js
Вопрос:
Я создаю круговую диаграмму Chartist со следующими данными:
var mapPieData = {
series: [
{ value: 578, className: "pieNegativeColour", label: "online" },
{ value: 3182, className: "piePositiveColour", label: "offline" }
],
highest: { label: "Huawei", value: "10258", className: "pieColour1" },
maximum: 3760};
Я использую следующие параметры для его настройки:
var mapPieOptions = {
showLabel: true,
fullWidth: true,
chartPadding: 0};
Я должен наложить сгенерированную круговую диаграмму на карту .SVG.
Проблема в том, что сгенерированная круговая диаграмма центрируется внутри контейнера .SVG, который шире, чем должен быть. Это означает, что позиционирование непрактично. Если я расположу круговую диаграмму в верхнем левом углу, она фактически окажется в верхней части посередине, чего я не хочу.
Я хочу убрать это дополнительное пространство вокруг круговой диаграммы.
Ответ №1:
Я смог воссоздать вашу круговую диаграмму с помощью предоставленного вами кода на веб-сайте с примерами скриптов.
http://gionkunz.github.io/chartist-js/examples.html
$('.ct-chart').css({'background-color':'white'});
var data = {
series: [
{ value: 578, className: "ct-series-c", label: "online" },
{ value: 3182, className: "ct-series-a", label: "offline" }
],
highest: { label: "Huawei", value: "10258", className: "pieColour1" },
maximum: 3760
};
var options = {
showLabel: true,
fullWidth: true,
chartPadding: 0
};
new Chartist.Pie('.ct-chart', data, options);
Я проанализировал это и заметил, что если я установлю для заполнения отрицательное значение, рендеринг увеличится в размере, но будет обрезан.
var options = {
showLabel: true,
fullWidth: true,
chartPadding: -40
};
Затем я увеличил размер содержащего элемента, который был равен 100%, но на самом деле не занимал всю высоту.
Установив для элемента контейнера высоту в 750 пикселей (настолько большую, насколько он широк, он будет занимать всю ширину элемента.
Итак, теперь мы должны автоматизировать это. Предполагая, что у вас есть jQuery под рукой, вы можете просто сделать:
var $chart = $('.ct-chart');
$chart.css({'height':$chart.width() 'px'});
Запуск примера на сайте snippets:
var $chart = $('.ct-chart');
$chart.css({'background-color':'white','height':$chart.width() 'px'});
var data = {
series: [
{ value: 578, className: "ct-series-c", label: "online" },
{ value: 3182, className: "ct-series-a", label: "offline" }
],
highest: { label: "Huawei", value: "10258", className: "pieColour1" },
maximum: 3760
};
var options = {
showLabel: true,
fullWidth: true,
chartPadding: 0
};
new Chartist.Pie('.ct-chart', data, options);
Если у вас нет jQuery, замените строки jQuery на:
var chart = document.querySelector('#pie-with-custom-labels .ct-chart');
chart.style.height = chart.clientWidth "px";