У меня есть метод контроллера, который возвращает данные для отображения на графике kendo-mvc. Количество серий, которые я хочу показать, определяется на стороне сервера. Я хочу показать несколько графиков на графике, что мне удалось, но чего я не могу сделать, так это привязать определенные серии к определенной оси.
Например: у меня есть 3 ряда со значениями во времени: температура 1 и температура 2, которые должны быть привязаны к левой вертикальной оси, которая показывает значение температуры, и ряд давления, который показывает значение на правой вертикальной оси давления.
Ниже мой код, который показывает серии, но без привязки к конкретным осям. Серии всегда привязаны к первым осям.
На самом деле мне удалось сделать это с помощью модели представления на уровне представления, но при использовании источника данных, как в следующем примере, мне не удалось выполнить требуемое. Для меня было бы наиболее логичным, если бы метод Line () имел бы аргумент оси рядом с категорией и значением, но это не так.
@(Html.Kendo().Chart<Novolyze.VOD.WebUI.Models.SeriesValue<object, DateTime>>()
.Name("telemetryChart")
.Title("")
.Transitions(false)
.DataSource(ds => ds.Read(read => read.Action("GetTelemetryTimeSeriesJson", "Equipment", new { equipmentId = Model.EquipmentId }))
.Group(g => g.Add(v => v.Series)))
.Legend(legend => legend
.Position(ChartLegendPosition.Bottom))
.Series(series =>
{
series
.Line(value => value.Value, category => category.Category)
.Markers(false)
.Name("#:group.value#");
})
.CategoryAxis(axis => axis
.Date()
.BaseUnit(ChartAxisBaseUnit.Seconds)
.AxisCrossingValue(Model.ValueAxes.Select(x => x.AxisCrossingValue).ToArray())
.Labels(labels => labels
.Rotation("auto")
.Step(60))
.MajorGridLines(majorGridLines => majorGridLines
.Step(3600))
)
.ValueAxis(axis =>
{
foreach (var valueAxis in Model.ValueAxes)
{
axis
.Numeric(valueAxis.Name)
.Labels(labels => labels
.Format("{0}" + " " + valueAxis.Unit));
}
})
.PersistSeriesVisibility(true)
)