В WPF, как я могу использовать разные стили рядов в одной декартовой диаграмме? - PullRequest
0 голосов
/ 26 июня 2019

Для информации я использую библиотеку Live charts.

То, что я хочу сделать, это диаграмма столбца диаграммы со справочной информацией. Результат будет как ниже.

enter image description here Я планировал использовать столбчатую диаграмму и диаграмму шага. И когда я бегу, результат показывает только столбчатые диаграммы. Четные данные ряда шагов также отображаются в виде столбца.

Как мне показать разные стили на одном графике?

enter image description here

Это мой код Xaml.

    <ScrollViewer HorizontalScrollBarVisibility="Visible" Width="1200" >
        <lvc:CartesianChart Name="MainChart" Series="{Binding Path=MainData}" Width="{Binding Path=MainChartWidth}">
                <lvc:CartesianChart.DataTooltip>
                    <lvc:DefaultTooltip SelectionMode="OnlySender"/>
                </lvc:CartesianChart.DataTooltip>
                <lvc:CartesianChart.AxisX>
                    <lvc:Axis Name="XAxis" Labels="{Binding Path=MainDataLabel}" ></lvc:Axis>
                </lvc:CartesianChart.AxisX>            
        </lvc:CartesianChart>
    </ScrollViewer>

И это код, связанный с вопросом.

        for (int idx = 0; idx < MainDataTable.Columns.Count; idx++)
        {
            List<string[]> tmpList = new List<string[]>();

            else if (idx == 1)
            {
                string[] tmpArray = new string[3];

                StepLineSeries tmpLineSeries = new StepLineSeries();
                List<int> tmpDataList = new List<int>();
                tmpLineSeries.Title = MainDataTable.Columns[idx].ColumnName;
                tmpLineSeries.Fill = Brushes.Transparent;
                tmpLineSeries.PointGeometry = null;
                tmpLineSeries.Width = 10;
                tmpLineSeries.StrokeThickness = 10;


                for (int rowCnt = 0; rowCnt < MainDataTable.Rows.Count; rowCnt++)
                {
                    tmpDataList.Add(Int32.Parse(MainDataTable.Rows[rowCnt][idx].ToString()));
                }
                tmpLineSeries.Values = new ChartValues<int>(tmpDataList);

                MainData.Add(tmpLineSeries);

            }
            else if (idx > 1) // (idx > 0)
            {
                string[] tmpArray = new string[3];

                ColumnSeries tmpLineSeries = new ColumnSeries();
                List<int> tmpDataList = new List<int>();
                tmpLineSeries.Title = MainDataTable.Columns[idx].ColumnName;
                tmpLineSeries.Stroke = new SolidColorBrush(searchCondition.getConditionColor(MainDataTable.Columns[idx].ColumnName));
                tmpLineSeries.Width = 15;

                for (int rowCnt = 0; rowCnt < MainDataTable.Rows.Count; rowCnt++)
                {
                    tmpDataList.Add(Int32.Parse(MainDataTable.Rows[rowCnt][idx].ToString()));
                }
                tmpLineSeries.Values = new ChartValues<int>(tmpDataList);

                MainData.Add(tmpLineSeries);

            }
        }

Спасибо.

...