【问题标题】:SciChart Column Series LabelFormattingSciChart Column Series LabelFormatting
【发布时间】:2015-02-04 04:29:18
【问题描述】:

我有一个数据系列List<Tuple<string,double>>,我从中创建了一个XyDataSeries<double, double>。我使用以下LabelFormatter

public class SciChartCustomLabelFormatter : ILabelFormatter
{
    private readonly string[] _xLabels;
    public SciChartCustomLabelFormatter(string[] xLabels)
    {
        _xLabels = xLabels;
    }
    public void Init(IAxis parentAxis)
    {
    }
    public void OnBeginAxisDraw()
    {
    }
    public ITickLabelViewModel CreateDataContext(IComparable dataValue)
    {
        throw new NotImplementedException();
    }
    public ITickLabelViewModel UpdateDataContext(ITickLabelViewModel labelDataContext, IComparable dataValue)
    {
         throw new NotImplementedException();
    }
    public string FormatLabel(IComparable dataValue)
    {
        var index = (double)Convert.ChangeType(dataValue, typeof(double));
        if (index >= 0 && index < _xLabels.Length)
            return _xLabels[(int)index];

        return index.ToString(CultureInfo.InvariantCulture);
    }
    public string FormatCursorLabel(IComparable dataValue)
    {
        var index = (double)Convert.ChangeType(dataValue, typeof(double));
        if (index >= 0 && index < _xLabels.Length)
            return _xLabels[(int)index];

        return index.ToString(CultureInfo.InvariantCulture);
    }
}

我想创建一个 FastColumnRenderableSeries

<sciChart:FastColumnRenderableSeries
        x:Name="columnSeries" DataPointWidth="1"
        SeriesColor="#A99A8A" Opacity="0.5"
        XAxisId="BottomAxisId"
        YAxisId="LeftAxisId"
        DataSeries="{Binding Series}">
</sciChart:FastColumnRenderableSeries>

将字符串用作列系列的标签。

目前,我可以用 YAxis 清楚地显示值来显示系列。 但是如何使用标签格式化程序来显示 XAxis 字符串?我不知道我应该如何处理这些方法:

public ITickLabelViewModel CreateDataContext(IComparable dataValue) 

public ITickLabelViewModel UpdateDataContext(ITickLabelViewModel labelDataContext, IComparable dataValue) 

我正在尝试在这里创建一个帕累托图。

【问题讨论】:

    标签: c# wpf charts scichart


    【解决方案1】:

    SciChart v3.0 中的 API 已更改,但我们最近更新了一篇关于“Overview of the Label Provider API”的文章

    我建议继承 LabelProviderBase,因为它实现了许多您不需要担心的接口方法。

    您可以使用LabelProvider 指定文本标签,如下所示:

    public class CustomLabelProvider : LabelProviderBase
    {
        /// <summary>Formats a label for the axis from the specified data-value passed in</summary>
        /// <param name="dataValue">The data-value to format</param>
        /// <returns>The formatted label string</returns>
        public override string FormatLabel(IComparable dataValue)
        {
            return dataValue.ToString(); // TODO: Implement as you wish
        }
        /// <summary>Formats a label for the cursor, from the specified data-value passed in</summary>
        /// <param name="dataValue">The data-value to format</param>
        /// <returns>The formatted cursor label string</returns>
        public override string FormatCursorLabel(IComparable dataValue)
        {
            return dataValue.ToString();// TODO: Implement as you wish
        }
    }
    

    在 XAML 中的使用

    <!-- Assumes you have declared the CustomLabelProvider as a static resource -->
    <s:NumericAxis LabelProvider="{StaticResource local:CustomLabelProvider}"/>
    

    最后,如果您需要更多信息,请参阅Screenshots, Printing and String Axis Labels here 的完整演练以及可下载的示例(更新为使用 API 的 v3.0)。

    披露:我是SciChart WPF Charts的MD和所有者

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多