LiveCharts-点图

时间:2019-06-18 20:35:39

标签: c# wpf livecharts

是否可以显示仅包含一个点的LineSeries X / Y图形? 对于两个或多个点,它的效果很好,但是即使将PointGeometry设置为某种形状,也不会显示一个点。 至少在此变体中,我希望单点系列看到一个点。有什么方法可以启用它吗?

编辑:非常抱歉,响应速度很慢,我不在电脑前。 萨克的回答使我感动,但我仍然没有解决方案。看我的代码-Sach示例的修改。 如果我对轴使用自己的数据类型和格式化程序,则只有在构造函数中指定了一点时,它才可以使用一个点。如果我创建一个空系列,当我添加至少两个点时,该图会显示吗? (请点击处理程序鼠标向下)

public partial class MainWindow : Window
    {
        LineSeries lineSeries;
        public SeriesCollection SeriesCollection { get; set; }
        public Func<double, string> XFormatter { get; set; }
        public Func<double, string> YFormatter { get; set; }

        public MainWindow()
        {
            InitializeComponent();

            var dayConfig = Mappers.Xy<DateModel>()
                .X(dayModel => (double)dayModel.DateTime.Ticks / TimeSpan.FromHours(1).Ticks)
                .Y(dayModel => dayModel.Value);

            lineSeries = new LineSeries()
            {
                //Values = new ChartValues<DateModel>{ new DateModel(DateTime.Now, 3) }, //this works
                Values = new ChartValues<DateModel>(),
                PointGeometry = DefaultGeometries.Circle
            };

            SeriesCollection = new SeriesCollection(dayConfig);
            SeriesCollection.Add(lineSeries);

            XFormatter = value => new System.DateTime((long)(value * TimeSpan.FromHours(1).Ticks)).ToString("HH:mm");
            YFormatter = value => value.ToString("0.0000");

            DataContext = this;
        }


        public class DateModel
        {
            public DateModel(DateTime timestamp, double value)
            {
                DateTime = timestamp;
                Value = value;
            }

            public System.DateTime DateTime { get; set; }
            public double Value { get; set; }
        }

        private void OnMouseDown(object sender, MouseButtonEventArgs e)
        {
            lineSeries.Values.Add(new DateModel(DateTime.Now, 3));
        }
    }

1 个答案:

答案 0 :(得分:1)

默认情况下有效。这是一个简单的LineSeries,只有一点:

public partial class MainWindow : Window
{
    public SeriesCollection SeriesCollection { get; set; }
    public MainWindow()
    {
        InitializeComponent();

        SeriesCollection = new SeriesCollection
        {
            new LineSeries
            {
                Values = new ChartValues<double> { 3 }
            }
        };

        DataContext = this;
    }
}

和XAML:

<Window x:Class="SOLineCharts.MainWindow"
        ....
        xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
        mc:Ignorable="d"
        WindowStartupLocation="CenterScreen"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <lvc:CartesianChart Series="{Binding SeriesCollection}" />
    </Grid>
</Window>

结果:

enter image description here