Contents
- Surface
- WireframeSurface
- Contour
- WireframeContour
Having trouble getting help?
Contact Support
Contact Support
Surface Types in WPF Surface Chart (SfSurfaceChart)
18 Aug 202112 minutes to read
Essential Surface Chart provides the following types to plot three dimensional data points.
- Surface
- WireframeSurface
- Contour
- WireframeContour
Surface
Surface charts are used to explore the relationship between three dimensional data.
The following code shows how to set the type of surface.
<chart:SfSurfaceChart ItemsSource="{Binding DataValues}" XBindingPath="X" Type="Surface"
YBindingPath="Y" ZBindingPath="Z" RowSize="{Binding RowSize}"
ColumnSize="{Binding ColumnSize}" >
</chart:SfSurfaceChart>
SfSurfaceChart chart = new SfSurfaceChart();
chart.Type = SurfaceType.Surface;
chart.SetBinding(SfSurfaceChart.ItemsSourceProperty, "DataValues");
chart.SetBinding(SfSurfaceChart.RowSizeProperty, "RowSize");
chart.SetBinding(SfSurfaceChart.ColumnSizeProperty, "ColumnSize");
chart.XBindingPath = "X";
chart.YBindingPath = "Y";
chart.ZBindingPath = "Z";
grid.Children.Add(chart);
The following code specifies the view model data bound to the chart for surface type.
public class Data
{
public double X { get; set; }
public double Y { get; set; }
public double Z { get; set; }
}
public class DataViewModel
{
public ObservableCollection<Data> DataValues { get; set; }
public int RowSize { get; set; }
public int ColumnSize { get; set; }
public DataViewModel()
{
DataValues = new ObservableCollection<Data>();
DataValues = new ObservableCollection<Data>();
double inc = 8.0 / 35;
for (double x = -4; x < 4; x += inc)
{
for (double z = -4; z < 4; z += inc)
{
double y = 2 * (x * x) + 2 * (z * z) - 4;
DataValues.Add(new Data() { X = x, Y = y, Z = z });
}
}
RowSize = 35;
ColumnSize = 35;
}
}
WireframeSurface
You can draw the wireframe or mesh, for the surface chart.
<chart:SfSurfaceChart ItemsSource="{Binding DataValues}" XBindingPath="X" Type="WireframeSurface"
YBindingPath="Y" ZBindingPath="Z" RowSize="{Binding RowSize}"
ColumnSize="{Binding ColumnSize}" >
</chart:SfSurfaceChart>
SfSurfaceChart chart = new SfSurfaceChart();
chart.Type = SurfaceType.WireframeSurface;
chart.SetBinding(SfSurfaceChart.ItemsSourceProperty, "DataValues");
chart.SetBinding(SfSurfaceChart.RowSizeProperty, "RowSize");
chart.SetBinding(SfSurfaceChart.ColumnSizeProperty, "ColumnSize");
chart.XBindingPath = "X";
chart.YBindingPath = "Y";
chart.ZBindingPath = "Z";
grid.Children.Add(chart);
Contour
Viewing the surface chart from the top is called contour. It is a graphical technique that represents the three dimensional surface in a two dimensional format.
<chart:SfSurfaceChart ItemsSource="{Binding DataValues}" XBindingPath="X" Type="Contour" Rotate="0"
YBindingPath="Y" ZBindingPath="Z" RowSize="{Binding RowSize}"
ColumnSize="{Binding ColumnSize}" >
<chart:SfSurfaceChart.ColorBar>
<chart:ChartColorBar ShowLabel="True" DockPosition="Right"/>
</chart:SfSurfaceChart.ColorBar>
</chart:SfSurfaceChart>
SfSurfaceChart chart = new SfSurfaceChart();
chart.Type = SurfaceType.Contour;
chart.Rotate = 0;
ChartColorBar colorBar = new ChartColorBar();
colorBar.DockPosition = ChartDock.Right;
colorBar.ShowLabel = true;
chart.ColorBar = colorBar;
SetData();
grid.Children.Add(chart);
The following code specifies the view model data bound to the chart for contour type.
private void SetData()
{
int x = 0;
for (double i = -10; i <= 10; i++, x++)
{
int z = 0;
for (double j = -10; j <= 10; j++, z++)
{
double y = i * Math.Sin(j) + j * Math.Sin(i);
chart.Data.AddPoints(x, y, z);
}
}
chart.RowSize = 21;
chart.ColumnSize = 21;
}
WireframeContour
You can draw the wireframe or mesh for the contour chart
<chart:SfSurfaceChart ItemsSource="{Binding DataValues}" XBindingPath="X" Type="WireframeContour"
YBindingPath="Y" ZBindingPath="Z" RowSize="{Binding RowSize}" Rotate="0"
ColumnSize="{Binding ColumnSize}" >
<chart:SfSurfaceChart.ColorBar>
<chart:ChartColorBar ShowLabel="True" DockPosition="Right"/>
</chart:SfSurfaceChart.ColorBar>
</chart:SfSurfaceChart>
SfSurfaceChart chart = new SfSurfaceChart();
chart.Type = SurfaceType.WireframeContour;
chart.Rotate = 0;
ChartColorBar colorBar = new ChartColorBar();
colorBar.DockPosition = ChartDock.Right;
colorBar.ShowLabel = true;
chart.ColorBar = colorBar;
SetData();
grid.Children.Add(chart);