График рисования парных линий при открытии второго файла через OpenFileDialog - PullRequest
1 голос
/ 26 мая 2019

Я делаю приложение, которое берет данные из файла и показывает их на графике.Но, когда я добавляю дополнительный файл, я вижу 3 графика, а не 2.

Я читаю CSV-файл, разбираю на двойные и добавляю серии.Это должно быть 2 графика, но я вижу 3.

    string[] tmpStrArr;
    double x;
    double y;
    public Form1()
    {
        InitializeComponent();
        chartGraphic.ChartAreas[0].AxisY.ScaleView.Zoom(-60, 15); // -15<= y <=15
        chartGraphic.ChartAreas[0].AxisX.ScaleView.Zoom(-60, 2); // -15 <= x <= 2
        chartGraphic.ChartAreas[0].CursorX.IsUserEnabled = true;
        chartGraphic.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
        chartGraphic.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
        chartGraphic.ChartAreas[0].AxisY.ScaleView.Zoomable = true;
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog ofd = new OpenFileDialog();
        string line = "";
        ofd.Title = "Open File With Data";
        ofd.Filter = "CSV File|*.csv|TXT File|*txt";
        if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            textBox1.Text = ofd.FileName;
            MessageBox.Show(ofd.FileName);
            StreamReader sr = new StreamReader(ofd.FileName);
            while (line != null)
            {

                //for (int i = -15; i < 2; i++)
                //{
                //}
                line = sr.ReadLine();
                if (line != null)
                {
                    tmpStrArr = line.Split(',');
                    x = Double.Parse(tmpStrArr[0]);
                    y = Double.Parse(tmpStrArr[1]);
                    chartGraphic.Series[0].Points.AddXY(x,y);


                    listBox1.Items.Add(line);
                }
            }
            chartGraphic.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
            tmpStrArr = null;
            x = 0;
            y = 0;

            sr.Close();
            ofd.Dispose();

        }


    }

Ожидается вывод 2 графиков из 2 файлов, а не 3 графиков из 2 файлов.

enter image description here

1 Ответ

0 голосов
/ 26 мая 2019

То, что вы видите, это не , как вы подозреваете три 'графики', но два !

Но так как ChartType равен Line, а последняя точка 1-й порции данных заканчивается в x = 30, а первая из 2-го файла начинается в x = 1, вы видите дополнительную строку соединение этих двух точек данных.

Line - это один из немногих типов, которые поддерживают значения x, идущие вперед и назад.

Вы можете изменить значение на ChartType Point для проверки.Или вы можете использовать 2nd Series для 2-го файла, и артефакт исчезнет.

Если вы предпочитаете держать все точки в одной серии, вы можетеНе препятствуйте соединительной линии, но вы можете скрыть ее : Вы можете начать каждый набор точек данных с Color.Transparent, так как цвет линии определяется 2-й точкой ..:

int pt = chartGraphic.Series[0].Points.AddXY(x,y);
if (pt == 0) chartGraphic.Series[0].Points[pt].Color = Color.Transparent
...