я хочу создать такую диаграмму
я создал это так
добавленный здесь текст является явным с фиксированными верхним и левым краями. Я хочу, чтобы он был отзывчивым. т.е. двигаться при изменении размера экрана. Есть ли способ для этого? в документации highchart есть только свойство name без указания свойства title. мой код указан здесь jsfiddle
$(function() {
$('#percentile ').highcharts({
title: {
text: 'Section Scores'
},
xAxis: {
categories: ['Apples', 'Oranges', 'Pears', 'Bananas', 'Plums']
},
labels: {
items: [{
html: 'Total fruit consumption',
style: {
left: '50px',
top: '12px',
color: (Highcharts.theme && Highcharts.theme.textColor) || 'black'
}
}]
},
series: [{
type: 'pie',
name: 'Total ',
data: [{
name: 'Jane',
y: 13,
color: Highcharts.getOptions().colors[0] // Jane's color
}, {
name: 'John',
y: 23,
color: Highcharts.getOptions().colors[1] // John's color
}],
center: [100, 80],
size: 150,
innerSize: '70%',
showInLegend: false,
dataLabels: {
enabled: false
}
}, {
type: 'pie',
name: ' consumption',
data: [{
name: 'Jane',
y: 13,
color: Highcharts.getOptions().colors[0] // Jane's color
}, {
name: 'John',
y: 23,
color: Highcharts.getOptions().colors[1] // John's color
}],
center: [400, 80],
size: 150,
innerSize: '70%',
showInLegend: false,
dataLabels: {
enabled: false
}
}]
});
});
Вы можете использовать класс Highcharts.SVGRenderer
и отображать пользовательские элементы svg на диаграмме с вычисленной позицией, например:
chart: {
events: {
render: function() {
var chart = this,
series1BBox = chart.series[0].group.getBBox(),
series2BBox = chart.series[1].group.getBBox(),
x1 = chart.plotLeft + series1BBox.x + series1BBox.width / 2,
x2 = chart.plotLeft + series2BBox.x + series2BBox.width / 2,
y1 = chart.plotTop + series1BBox.y + series1BBox.height / 2,
y2 = chart.plotTop + series1BBox.y + series1BBox.height;
if (!this.customLabels) { // render custom labels
chart.customLabels = [];
this.customLabels[0] = chart.renderer.text('Text 1')
.css({
color: '#4572A7',
fontSize: '16px',
'vertical-align': 'middle'
})
.attr({
align: 'center'
})
.add();
...
}
// define position
chart.customLabels[0].attr({
x: x1,
y: y1 + chart.customLabels[0].getBBox().height / 2
});
...
}
}
}
Живая демонстрация: https://jsfiddle.net/BlackLabel/5sro1tj9/
Справочник по API: https://api.highcharts.com/class-reference/Highcharts.SVGRenderer#text
Привет, @Faizan Ahmad, в приведенном мной примере ярлыки должны быть адаптивными.
Но дело в том, что при изменении размера экрана выравнивание текста не реагирует на svg. так что я сделал, я создал один график в одном div, я выравнивание текста будет посередине. и другой текст можно легко изменить.