使用实时图表在x轴上添加后续月份

时间:2017-12-06 23:31:34

标签: c# wpf livecharts

 private int SumOfNodes()
    {
        ManufacturingDataModel MDM = new ManufacturingDataModel();
        Test t = new Test(MDM);

        List<Hardware> SumOfHardware = t.GetHardware().FindAll(x => x.Nodes != 0);

        int SumOfNodes = 0;

        foreach (Hardware i in SumOfHardware )
        {
            SumOfNodes += i.Nodes;
        }

        return SumOfNodes;
    }


    private int SumOfRepeaters()
    {
        ManufacturingDataModel MDM = new ManufacturingDataModel();
        Test t = new Test(MDM);

        List<Hardware> SumOfHardware = t.GetHardware().FindAll(x => x.Repeaters != 0);

        int SumOfRepeaters = 0;

        foreach (Hardware i in SumOfHardware)
        {
            SumOfRepeaters += i.Repeaters;
        }

        return SumOfRepeaters;
    }

    private int SumOfHubs()
    {
        ManufacturingDataModel MDM = new ManufacturingDataModel();
        Test t = new Test(MDM);

        List<Hardware> SumOfHardware = t.GetHardware().FindAll(x => x.Hubs != 0);

        int SumOfHubs= 0;

        foreach (Hardware i in SumOfHardware)
        {
            SumOfHubs += i.Hubs;
        }

        return SumOfHubs;
    }

    private string Month()
    {
        DateTime now = DateTime.Now;

        string month = DateTime.Now.ToString("MMMM");

        return month;
    }

    private void DisplayData()
    {

        SeriesCollection = new SeriesCollection
        {
            new ColumnSeries
                {
                      Title = "Nodes",
                      Values = new ChartValues<int> { SumOfNodes() }
                },


        };

        SeriesCollection.Add
        (
            new ColumnSeries
            {
                Title = "Repeaters",
                Values = new ChartValues<int> { SumOfRepeaters() }
            }
        );

        SeriesCollection.Add
       (
           new ColumnSeries
           { 
               Title = "Hubs",
               Values = new ChartValues<int> { SumOfHubs() }
           }
       );



        Labels = new[] { Month() };
        Formatter = value => value.ToString("N");

        DataContext = this;

    }

enter image description here

在这一点上,我设法创建了一个应用程序,可以在我的数据库中添加/删除和更新我的项目。我还计划添加一些统计数据(从图形可视化开始),但我遇到了一个问题。 我想根据几个月分隔列。因此,例如,无论我添加了多少项,附加图像都可以看到,删除或更新每个项目的总金额会添加到Decemeber。但是,当1月份对我的物品数量进行任何新增的修改时,我希望看到与Decemeber相邻的物品。 P.S。:有很多代码重复,稍后会解释。

1 个答案:

答案 0 :(得分:0)

我已经成功地将我的答案放在一起,这可能对将来的某些人有用 我所做的就是 1)从我的数据库中获取数据。 2)使用LINQ查询找到感兴趣的月份**

  • 而不是选择项目(即中继器,节点)

** 3)通过这样做,它还可以解释我感兴趣的月份中感兴趣的项目。 4)执行增量foreach循环,如上面的代码所示。 5)更改我想要显示的方法(即DisplayData到DisplayDecemberData)并以与上面相同的方式使用。 6)为后续月份创建更多方法,只需在ChartValues对象中添加其他信息。

见下文

private int DecemberNodes()
    {
        ManufacturingDataModel MDM = new ManufacturingDataModel();
        Test t = new Test(MDM);

        List<Hardware> decembernodes = t.GetHardware().FindAll(x => x.Date.Month==12);

        int DecemberSumOfNodes = 0;

        foreach (Hardware i in decembernodes)
        {
            DecemberSumOfNodes += i.Nodes;
        }

        return DecemberSumOfNodes;
    }


    private int JanuaryNodes()
    {
        ManufacturingDataModel MDM = new ManufacturingDataModel();
        Test t = new Test(MDM);

        List<Hardware> januarynodes = t.GetHardware().FindAll(x => x.Date.Month==01);

        int JanuarySumOfNodes = 0;

        foreach (Hardware i in januarynodes)
        {
            JanuarySumOfNodes += i.Nodes;
        }


     private void DisplayDecemberData()
    {

        SeriesCollection = new SeriesCollection
        {
            new ColumnSeries
                {
                      Title = "Nodes",
                      Values = new ChartValues<int> { DecemberNodes()  }
                },


        };


     private void DisplayJanuaryData()
    {

        SeriesCollection = new SeriesCollection
        {
            new ColumnSeries
                {
                      Title = "Nodes",
                      **Values = new ChartValues<int> { DecemberNodes(),  JanuaryNodes()  }**
                },


        };

有一些代码重复,我很确定实际上有更简洁的代码方式,但是现在这似乎可以解决问题。当我简化代码时,我会发布它。