У меня есть объявление c. js работает тепловая карта:
Но я хочу добавить к нему линии сетки, например:
Вы можете видеть, что линии не совпадают с нижними краями прямоугольников. Вставить сами линии очень просто, вы просто начинаете с нуля и добавляете 11 строк в зависимости от высоты прямоугольников, которая в данном случае всегда будет 11 / chart.effectiveHeight ().
Причина, по которой они не работают совпадают, кажется, что верхняя строка прямоугольника не всегда начинается с 0, вместо этого, похоже, есть случайная (?) позиция y, с которой начинается диаграмма, это будет меняться с высотой контейнера диаграммы, например, это y позиция начинается с 5:
Если бы это было согласованно, то я мог бы просто начать добавлять строки с этого номера вместо 0, но это не так . Я пробовал пару хитрых обходных путей, однако я не уверен, как получить положение y всех прямоугольников после того, как они будут доступны в DOM.
Интересно, что на демонстрационной тепловой карте нет этой проблемы:
Вот код тепловой карты:
const heat_map = dc.heatMap('#heatmap');
heat_map
.width(0)
.height(0)
.margins(margins)
.dimension(hm_dim)
.group(hm_group)
.keyAccessor(function(d) { return +d.key[0]; })
.valueAccessor(function(d) { return +d.key[1]; })
.colorAccessor(function(d) { return +d.value; })
.colors(color_scale)
.calculateColorDomain()
.yBorderRadius(0)
.xBorderRadius(0)
heat_map.render();
Есть ли способ заставить прямоугольники начинаться с 0 ? Или получить случайную позицию y для верхних строк? Я посмотрел исходный код, но немного заблудился. Также я подумал о создании ложной группы, которая будет включать каждый прямоугольник в сетке, а линии сетки тогда могут быть прямоугольными границами, но я подумал, что это было немного тяжеловато.