Я ищу схему, подобную той, что на картинке.Мне нужно иметь возможность снабжать диаграмму данными, чтобы проценты и размер квадратов могли динамически изменяться.
Так что здесьмоя реализация пока использует Highcharts:
Highcharts.chart('container', {
chart: {
type: 'area',
margin: [100,100,100,100],
events: {
load: function () {
var ren = this.renderer,
rightArrow = ['M', 0, 0, 'L', -5, 5, 'M', 0, 0, 'L', -5, -5],
leftArrow = ['M', 0, 0, 'L', 5, -5, 'M', 0, 0, 'L', 5, 5],
topArrow = ['M', 0, 0, 'L', 5, 5, 'M', 0, 0, 'L', -5, 5],
bottomArrow = ['M', 0, 0, 'L', 5, -5, 'M', 0, 0, 'L', -5, -5];
ren.path(rightArrow).attr({'stroke-width': 2,stroke: "black"}).translate(600,350).add();
ren.path(leftArrow).attr({'stroke-width': 2,stroke: "black"}).translate(100,350).add();
ren.path(topArrow).attr({'stroke-width': 2,stroke: "black"}).translate(350,100).add();
ren.path(bottomArrow).attr({'stroke-width': 2,stroke: "black"}).translate(350,600).add();
}
}
},
title: false,
tooltip: false,
xAxis: {
offset: -250,
gridLineWidth: 1,
min: -100,
max: 100,
tickInterval: 10,
labels: false,
lineColor: 'black',
lineWidth: 2,
title: false
},
yAxis: {
offset: -250,
gridLineWidth: 1,
min: -100,
max: 100,
tickInterval: 10,
labels: false,
lineColor: 'black',
lineWidth: 2,
title: false
},
plotOptions: {
area: {
lineWidth: 1,
allowPointSelect: false
},
series: {
marker: {
states: {
hover: {
enabled: false
}
}
}
}
},
series: [{
data: [[1,1],[1,55],[55,55],[55,1],[1,1]]
}, {
data: [[-1,1],[-1,25], [-25,25], [-25,1],[-1,1]]
}, {
data: [[-1,-1],[-1,-35],[-35,-35],[-35,-1],[-1,-1]]
}, {
data: [[1,-1],[1,-15],[15,-15],[15,-1],[1,-1]]
}]
});
https://codepen.io/vassilis/pen/oPKPNr