В настоящее время ваш svg не изменяется, потому что вы указали фиксированное значение для контейнера svg 200x200
.
var svgContainer = d3.select("#chart")
.append("svg")
.attr("width", 200) // setting fixed width
.attr("height", 200) // setting fixed width
Одним из решений является изменение их на проценты, которые будут масштабироваться до размера его родителя.
var svgContainer = d3.select("#chart")
.append("svg")
.attr("width", '100%') // percent width
.attr("height", 100%) // percent height
Другим возможным решением является использование события Window#resize
и изменение размера svg в зависимости от изменений.
window.addEventListener('resize', function () {
// select svg and resize accordingly
});
Я должен добавить, что в chrome вы можете использовать ResizeObserver , чтобы отслеживать изменения размера родителей svg и соответственно изменять размер svg.
const resizeOb = new ResizeObserver((entries: any[]) => {
for (const entry of entries) {
const cr = entry.contentRect;
const width = cr.width; // parent width
const height = cr.height; // parent height
// resize svg
}
});
this.resizeOb.observe(svgParentElement);