Отличный вопрос, я боюсь, что ответ - нет, SciChart не предоставляет возможности одинакового разнесения маркеров точек данных из коробки.Как вы указали, они привязаны к точке данных.
Однако SciChart предоставляет возможность создавать собственные серии для рисования, что вы хотите.
В приведенном выше примере / статье есть примеры кода, показывающие, как визуализировать PointMarker в пользовательской серии.
Ниже приведен рабочий пример для CustomRenderableSeries, который рисует PointMarker с помощью API RenderContext.Это не отличается от нашей серии Scatter, но показывает некоторые из внутренних принципов того, как этот API работает
public class CustomPointRenderableSeries : CustomRenderableSeries
{
protected override void Draw(IRenderContext2D renderContext, IRenderPassData renderPassData)
{
base.Draw(renderContext, renderPassData);
// Get the CustomPointRenderableSeries.PointMarker to draw at original points
// Assumes you have declared one in XAML or code
//
// e.g. CustomPointRenderableSeries.PointMarker = new EllipsePointMarker();
//
var pointMarker = base.GetPointMarker();
if (pointMarker != null)
{
// The resampled data for this render pass
var dataPointSeries = renderPassData.PointSeries;
var xCalc = renderPassData.XCoordinateCalculator;
var yCalc = renderPassData.YCoordinateCalculator;
// Begin a batched PointMarker draw operation
pointMarker.BeginBatch(renderContext, pointMarker.Stroke, pointMarker.Fill);
// Iterate over the data
for (int i = 0; i < dataPointSeries.Count; i++)
{
// Convert data to coords
double xCoord = xCalc.GetCoordinate(dataPointSeries.XValues[i]);
double yCoord = yCalc.GetCoordinate(dataPointSeries.YValues[i]);
int dataIndex = dataPointSeries.Indexes[i];
// Draw at current location
pointMarker.MoveTo(renderContext, xCoord, yCoord, dataIndex);
}
// End the batch
// Note: To change point color, start a new batch
pointMarker.EndBatch(renderContext);
}
}
}
Таким образом, вы можете теоретически изменить этот пример, чтобы разместить X-координату на фиксированнойинтервал, в отличие от dataPointSeries.XValues [i].
Обратите внимание, что этот код зацикливается на dataPointSeries.Count, который является значениями X, Y в области просмотра.Если вы хотите поместить дополнительные маркеры точек между точками данных, вам нужно будет как-то интерполировать значения Y.
Это упражнение для читателя, но как взаимодействовать с библиотекой SciChart для создания пользовательских серий, можно с помощью вышеизложенного.