Почему моя круговая диаграмма LiveCharts создает 3 графика вместо 3 срезов - PullRequest
0 голосов
/ 07 марта 2019

У меня есть данные, которые я хочу показать на круговой диаграмме. Amount будут значения и MsgType этикетки. Диаграмма должна иметь 3 среза. Таблица выглядит так:

MsgType    Amount
-----------------
3          4500
2          1262
1          3956

Я следовал нескольким примерам, чтобы создать новую серию пирогов, чтобы показать ее в своем приложении. Код-код выглядит следующим образом:

    public SeriesCollection MsgTypeDoughnut { get; set; }
    public List<int> Lables { get; set; }


    public MsgTypeProportion()
    {
        InitializeComponent();

        List<DataMsgType> dataMsgTypes = GetMsgType();
        ChartValues<int> values = new ChartValues<int>();
        Lables = new List<int>();
        foreach (var item in dataMsgTypes)
        {
            values.Add(item.Amount);
            Lables.Add(item.MsgType);
        }

        MsgTypeDoughnut = new SeriesCollection
        {
            new PieSeries
            {
                Title = "Amount",
                Values = values,
                DataLabels = true
            }
        };

        DataContext = this;
    }

    public List<DataMsgType> GetMsgType()
    {
        DataSet DS = new DataSet();
        DataSetTableAdapters.spMessages_GetMsgTypeOverviewTableAdapter MsgTypeta = new DataSetTableAdapters.spMessages_GetMsgTypeOverviewTableAdapter();
        MsgTypeta.Fill(DS.spMessages_GetMsgTypeOverview);
        List<DataMsgType> dataMsgTypes = new List<DataMsgType>();
        foreach (DataRow row in DS.Tables["spMessages_GetMsgTypeOverview"].Rows)
        {
            dataMsgTypes.Add(new DataMsgType() { MsgType = (int)row["MsgType"], Amount = (int)row["Amount"]});
        }

        return dataMsgTypes;
    }

Но это создает 3 новых круговых диаграммы, а не 3 ломтика в 1 круговой диаграмме. Я нашел этот вопрос как создать круговую диаграмму с живыми диаграммами , и решение состоит в том, чтобы иметь несколько PieSeries, но я не могу понять, как это сделать, используя строки с моего стола.

1 Ответ

0 голосов
/ 07 марта 2019

Я нашел ответ вместо того, чтобы делать:

foreach (var item in dataMsgTypes)
    {
        values.Add(item.Amount);
        Lables.Add(item.MsgType);
    }

    MsgTypeDoughnut = new SeriesCollection
    {
        new PieSeries
        {
            Title = "Amount",
            Values = values,
            DataLabels = true
        }
    };

Я должен был сделать:

MsgTypeDoughnut = new SeriesCollection();
foreach (var item in dataMsgTypes)
        {
            MsgTypeDoughnut.Add(new PieSeries
            {
                Title = "test",
                Values = new ChartValues<ObservableValue> { new ObservableValue(item.Amount) },
                DataLabels = true,
                Stroke = System.Windows.Media.Brushes.Transparent
            });
            Lables.Add("MsgType " + (item.MsgType));
        }

Таким образом, данные в строках моей таблицы добавляются в круговую диаграмму какновые кусочки вместо новых круговых диаграмм.

...