Mschart нескольких рядов с различным значением счетчика (Изменение интервала xAxis) - PullRequest
1 голос
/ 25 марта 2020

Мне нужно сохранить линейную диаграмму в формате .png, может быть, даже в файле .svg. Набор данных (дата, значение) и имеет 1800 значений каждый. Я могу сохранить очень точный .png, но, но основные линии сетки xAxis заполняют всю область диаграммы. Его практично полностью черный. Я использую System. Windows .Forms.DataVisualization.Charting; для создания диаграммы между прочим.

(см. скриншот)

я попытался увеличить интервал xAxis на 100, чтобы отобразить только 18 временных отметок, но все еще все 1800 значений, которые не работал вообще. Кроме того, я попытался добавить дополнительную серию, содержащую только 18 значений, сделать линию прозрачной и сделать видимой только ось x второй серии.
Я также попытался использовать MigraDo c / PDFSharp из NuGet для непосредственного построения диаграммы в файл .pdf. Я тоже не нашел способа сделать это там. Или я делаю что-то ужасно неправильно?

Надеюсь, у каждого из вас есть представление о чем я говорю!

public void createWinfromChart()
        {
            int cnt = 0;
            foreach (KeyValuePair<string, Data> keyValue in obj)
            {
                chart1      = new Chart();
                chart1.Size = new Size(1000, 1000);
                addNewSeries(keyValue.Value.simplifyOutput(), keyValue.Key);
                cnt++;
                saveChartImage(cnt);
            }
        }
public void addNewSeries(Dictionary<string, float> dictionary, string tag)
        {
            ChartArea chartArea = new ChartArea();
            chart1.ChartAreas.Add(chartArea);

            //xAchse
            chart1.ChartAreas[0].Axes[0].MajorGrid.Enabled = false;
            //yAchse
            chart1.ChartAreas[0].Axes[1].MajorGrid.Enabled = false;
            chart1.ChartAreas[0].AxisX.Interval            = 100;

            Series series = new Series();

            //Series style
            series.ChartType       = SeriesChartType.Line;
            series.BorderWidth     = 2;
            series.Color           = Color.Green;
            series.IsXValueIndexed = false;

            foreach (float values in obj[tag].value)
            {
                series.Points.AddY(values);
            }

            chart1.Series.Add(series);
            ChartArea chartArea2 = new ChartArea();
            chart1.ChartAreas.Add(chartArea2);
            chart1.ChartAreas[1].Axes[0].MajorGrid.Enabled = true;
            chart1.ChartAreas[1].Axes[1].MajorGrid.Enabled = true;

            Series series2 = new Series();
            series2.ChartType       = SeriesChartType.Line;
            series2.BorderWidth     = 0;
            series2.Color           = Color.Transparent;
            series2.IsXValueIndexed = false;

            foreach (KeyValuePair<string, float> valuePair in dictionary)
            {
                series2.Points.AddXY(valuePair.Key, 0);
            }

            chart1.Series.Add(series2);
        }

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