#javascript #d3.js #svg
#javascript #d3.js #svg
Вопрос:
Я немного смущен тем, как объект оси D3s занимает исходное положение и где он привязан (я предполагаю, что его верхний левый)
Также кажется, что исходная точка изменяется в соответствии с диапазоном соответствующего масштаба, например, две оси ниже будут начинаться с другого положения
1-я ось
//Xscale with scale not augmented
var stageXScale=d3.scaleLinear()
.domain([0,150])
.range([0,150]);
var stageXAxis = d3.axisBottom(stageXScale) //unaug axis
.ticks(20);
2-я ось
//scale which is augmented
var stageXScaleAug=d3.scaleLinear()
.domain([0,stageWidth])
.range([0 stageMarginLeft,150 stageMarginLeft]);
var stageXAxisAug = d3.axisBottom(stageXScaleAug) //aug axis
.ticks(20);
Разве начало координат оси не сопоставлено с началом координат родительского контейнера, если да, то почему масштаб оси изменяет это.
Вот пример скрипки Js :
Ответ №1:
Положение начала координат оси (до transform
) определяется минимальным значением диапазона шкалы.
Для оси 1 диапазон [0,150]
равен, а ось начинается с экранной координаты x 0
родительского элемента. (Ось заканчивается на координате x 150.)
Для оси 2 диапазон равен [0 stageMarginLeft,150 stageMarginLeft]
, так что ось начинается с экранной координаты x stageMarginLeft
(20) родительского элемента.
Комментарии:
1. есть ли способ, которым я всегда могу запустить ось в начале координат родительского элемента независимо от масштаба
2. Почему бы вам просто не всегда начинать диапазон вашего масштаба с 0 в этом случае? Это цель
range
. Диапазон — это диапазон координат экрана относительно родительского элемента, над которым будет отображаться ось.