У меня есть приложение WPF, где мне нужно визуализировать y = y (x1, x2), где x1, x2 - линейные координаты. Я могу сделать это, используя HeatMapSeries в Oxyplot, но когда я хочу построить два набора данных в одном окне, тепловые карты не являются подходящим инструментом. Несколько контурных рядов были бы лучше. Теперь, я пытался добиться этого в том же порядке, как и с HeatMapSeries, который работал очень хорошо:Как создать и построить ContourSeries с помощью Oxyplot?
public void PlotHeatMap(){
OxyPlot.PlotModel model = new PlotModel { Title = "2-D data" };
model.Axes.Add(new OxyPlot.Axes.LinearColorAxis {
Position = OxyPlot.Axes.AxisPosition.Right,
Palette = OxyPalettes.Jet(500),
HighColor = OxyColors.Gray,
LowColor = OxyColors.Black });
OxyPlot.Series.HeatMapSeries heatmap = new OxyPlot.Series.HeatMapSeries {
Data = (Double[ , ])data,
X0 = x1min,
X1 = x1max,
Y0 = x2min,
Y1 = x2max
};
model.Series.Add(heatmap);
}
Теперь, когда я пытаюсь использовать ContourSeries вместо этого, я просто заменить HeatMapSeries с микросхемой ContourSeries:
public void PlotContour(){
OxyPlot.PlotModel model = new PlotModel { Title = "2-D data" };
model.Axes.Add(new OxyPlot.Axes.LinearColorAxis {
Position = OxyPlot.Axes.AxisPosition.Right,
Palette = OxyPalettes.Jet(500),
HighColor = OxyColors.Gray,
LowColor = OxyColors.Black });
OxyPlot.Series.ContourSeries contour = new OxyPlot.Series.ContourSeries {
ColumnCoordinates = arrayFromMinToMax1,
RowCoordinates = arrayFromMinToMax2,
ContourLevels = arrayOfLevels,
ContourColors = arrayOfColors, // Same # elements as the levels' array
Data = (Double[ , ])data
};
model.Series.Add(contour);
}
Это просто произвести вывод:
Ось x и y есть и соответствуют координатам min и max, но я не вижу контурных линий. Я подозреваю, что что-то не хватает при настройке оси (если она такая же, как для HeatMapSeries?). Я не знаю, как продолжить этот контурный сюжет. Существуют ли примеры, отличные от, например, примеры ContourSeriesExamples в GitHub?
Спасибо за помощь!
Может быть просто, что вы черчение неправильного региона? Глядя на оси в вашем контурном сюжете, они, похоже, перевернуты по сравнению с графиком тепловой карты. Что делать, если вместо этого вы устанавливаете 'ColumnCoordinates = arrayFromMinToMax2' и' RowCoordinates = arrayFromMinToMax1'? –
Спасибо, что указали это, Андерс, но результат тот же. Я обновил изображение. –
Если вы посмотрите на [HeatMapSeriesExamples] (https://github.com/oxyplot/oxyplot/blob/develop/Source/Examples/ExampleLibrary/Series/HeatMapSeriesExamples.cs#L27), он даже сочетает тепловую карту с контурами, поэтому контуры должны быть прямолинейными. Пусть 'ContourSeries' сами определяют уровни и цвета, т. Е. Удаляют свойства ContourLevels и ContourColors из инициализатора и видят, дает ли это какой-либо улучшенный результат. –