Mam aplikację WPF, w której muszę wizualizować y = y (x1, x2), gdzie x1, x2 są współrzędnymi liniowymi. Mogę to zrobić za pomocą HeatMapSeries w Oxyplot, ale kiedy chcę wydrukować dwa zestawy danych w tym samym oknie, mapy termiczne nie są odpowiednim narzędziem. Kilka serii konturowych byłoby lepsze. Teraz starałem się to osiągnąć w taki sam sposób jak w przypadku HeatMapSeries, który pracował całkiem dobrze:Jak utworzyć i wydrukować ContourSeries za pomocą 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);
}
Teraz, gdy próbuję zamiast używać ContourSeries, po prostu zastąpić HeatMapSeries z 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);
}
To właśnie produkować wyjście:
Są tam osie x i y, które odpowiadają współrzędnym minimalnym i maksymalnym, ale nie widzę linii konturu. Podejrzewam, że czegoś brakuje w tworzeniu Osi (czy powinien być taki sam jak w przypadku HeatMapSeries ??). Nie wiem, jak postępować z tym konturem. Czy są przykłady inne niż np. ContourSeriesExamples w GitHub?
Dzięki za pomoc!
Może to być po prostu, że spiskują niewłaściwy region? Patrząc na osie na wykresie konturu, wydaje się, że są odwrócone w stosunku do wykresu mapy ciepła. Co się stanie, jeśli zamiast tego ustawisz 'ColumnCoordinates = arrayFromMinToMax2' i' RowCoordinates = arrayFromMinToMax1'? –
Dzięki za wskazanie tego, Anders, ale wynik jest taki sam. Jednak zaktualizowałem obraz. –
Jeśli spojrzeć na [HeatMapSeriesExamples] (https://github.com/oxyplot/oxyplot/blob/develop/Source/Examples/ExampleLibrary/Series/HeatMapSeriesExamples.cs#L27) to nawet łączy mapę ciepła z konturami, więc kontury powinny być naprawdę proste. Niech 'ContourSeries' decydują o samych poziomach i kolorach, tzn. Usuwają właściwości' ContourLevels' i 'ContourColors' z inicjalizatora i sprawdzają, czy zapewnia to ulepszony resut. –