Я не уверен в том, какое именно поведение вы хотите - возможно, вы сможете уточнить, если это необходимо.
Мне понадобилась фиксированная начальная ось с определенным значением в FitToView, чтобы, когда график вырастал по начальной оси, ось автоматически изменяла размеры сзатем на.
Для достижения этого я использовал FitToViewRestriction с DomainRestriction:
<d3:ChartPlotter.FitToViewRestrictions>
<d3:DomainRestriction Domain="0,0,10,14000"/>
</d3:ChartPlotter.FitToViewRestrictions>
Здесь прямоугольник домена - это начальный прямоугольник порта вида, который определяет начальные пределы оси.Установка FitToView означает, что ось масштабируется, когда график выходит за пределы этого начального предела.
Обратите внимание, однако, что в используемой нами версии D3 (0.3.4703.0) имплементация DomainRestriction не была реализована. Apply не дал мне нужного мне поведения, поэтому было необходимо изменить исходный код.Соответствующий файл - DynamicDataDisplay \ v0.3.4703 - Nightly src \ src \ DynamicDataDisplay \ ViewportRestrictions \ DomainRestrictions.cs.
Я изменил DomainRestriction. Применяется к:
public override DataRect Apply(DataRect oldDataRect, DataRect newDataRect, Viewport2D viewport) {
return (domain.IsEmpty) ? newDataRect : DataRect.Union(newDataRect, domain);
}
, что дает описанный мной опыт.Я думаю, что вы хотите что-то подобное, но это относится только к оси х.Т.е. вы хотите, чтобы значение y оставалось фиксированным на его начальном значении, но вы хотите, чтобы значение x масштабировалось по мере поступления данных с FitToView.Просто измените описанный выше метод, и вы сможете получить такое поведение.