Сортировка проблем с диаграммами в C # - PullRequest
0 голосов
/ 14 февраля 2019

Я использую System.Windows.Forms.DataVisualization.Charting.Chart () для создания PNG-файла диаграммы.У меня есть следующий код:

string t = @"<Chart> 
            <ChartAreas> 
                <ChartArea Name=""Default"" _Template_=""All""> 
                    <AxisX Interval=""1""></AxisX> 
                </ChartArea> 
            </ChartAreas> 
        </Chart>";

var chart = new System.Windows.Forms.DataVisualization.Charting.Chart()
{
    Size = new Size(x, y),
    Titles = { chartName },
};

var series = new Series("Savings");
series.ChartType = SeriesChartType.Line;
series.Points.DataBindXY(preparedGraphCollection.Keys, preparedGraphCollection.Values);                

chart.ChartAreas.Add(new ChartArea());
chart.ChartAreas[0].AxisX.Interval = 1;                

chart.Series.Add(series);                

System.IO.Directory.CreateDirectory(graphTempFilePath);
chart.SaveImage(graphTempFilePath + filename + ".png", ChartImageFormat.Png);

prepareGraphCollection содержит список KayValuePair, где ключи представляют номера недель, а значения - это номера для каждой недели, например,

50 => 310
51 => 335
52 => 340
1 => 350
2 => 375

Myпроблема в том, что даже если я не отправил какую-либо сортировку или около того на графике, диаграмма выходит там, где номера недель отсортированы таким образом, чтобы наименьшее число отображалось первым.Это дает странный вид диаграммы.Даже если ключи и значения не сортируются таким образом, диаграмма создается с такой сортировкой.Чтобы показать это, как показано выше, на графике были получены данные примерно так:

1 => 350
2 => 375
50 => 310
51 => 335
52 => 340

У вас есть предложения?

1 Ответ

0 голосов
/ 14 февраля 2019

Поскольку ваши значения x равны числам , они добавляются вместо .

Чтобы они отображались в порядке их добавления, вы можете

  • либо установить Series.IsXValueIndexed = true

  • или добавьте их как DateTime и установите индивидуальный Labels на номера недели.

  • Или Вы можете добавить их, добавить строки.

Несколько замечаний:

  • Первый действительно прост, но не создаст пропорциональный интервал.Так как вы, вероятно, не хотите / не нуждаетесь в этом, я предлагаю установить индексируемую серию.

  • Второй вариант сложен, так как номера недель нелегко конвертировать в правильные даты.

  • Добавление значений x в виде строк не рекомендуется, поскольку потеряет фактических значений!(Даже если ярлыки все равно будут выглядеть хорошо ..)

IsXValueIndexed также часто используется, чтобы избежать пропусков в данных, таких как выходные и т. Д.

Обратите внимание, чтотеперь все другие Series в том же ChartArea также должны быть проиндексированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...