C# 当通过OpenFileDialog打开第二个文件时,图表绘制耦合线
我正在制作一个应用程序,它从文件中提取数据并显示在图表上。但是,当我添加一个额外的文件时,我会看到3个图形,而不是2个 我正在阅读csv文件,将其解析为double并添加序列。它必须是2个图形,但我看到3个C# 当通过OpenFileDialog打开第二个文件时,图表绘制耦合线,c#,mschart,openfiledialog,C#,Mschart,Openfiledialog,我正在制作一个应用程序,它从文件中提取数据并显示在图表上。但是,当我添加一个额外的文件时,我会看到3个图形,而不是2个 我正在阅读csv文件,将其解析为double并添加序列。它必须是2个图形,但我看到3个 string[] tmpStrArr; double x; double y; public Form1() { InitializeComponent(); chartGraphic.ChartAreas[0].Axi
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();
}
}
string[]tmpStrArr;
双x;
双y;
公共表格1()
{
初始化组件();
chartGraphic.ChartAreas[0].AxisY.ScaleView.Zoom(-60,15);//-15您看到的不是您怀疑的三个“图形”,而是两个
但是由于图表类型
是行
,并且第一个数据部分的最后一点在x=30处结束,第二个文件的第一个在x=1处开始,您会看到一条额外的线连接这两个数据点
Line
是为数不多的支持前后x值的类型之一
您可以更改为ChartType
点
进行测试。或者,您可以使用2nd系列
进行第二个文件的测试,然后将显示工件
如果您希望将所有点保持在同一系列中,您不能阻止连接线,但您可以隐藏连接线:您可以使用颜色启动每组数据点。透明的,因为线的颜色由第二个点决定:
int pt = chartGraphic.Series[0].Points.AddXY(x,y);
if (pt == 0) chartGraphic.Series[0].Points[pt].Color = Color.Transparent
你看到的不是你所怀疑的三个“图形”,而是两个
但是由于图表类型
是行
,并且第一个数据部分的最后一点在x=30处结束,第二个文件的第一个在x=1处开始,您会看到一条额外的线连接这两个数据点
Line
是为数不多的支持前后x值的类型之一
您可以更改为ChartType
点
进行测试。或者,您可以使用2nd系列
进行第二个文件的测试,然后将显示工件
如果您希望将所有点保持在同一系列中,您不能阻止连接线,但您可以隐藏连接线:您可以使用颜色启动每组数据点。透明的,因为线的颜色由第二个点决定:
int pt = chartGraphic.Series[0].Points.AddXY(x,y);
if (pt == 0) chartGraphic.Series[0].Points[pt].Color = Color.Transparent
你能显示结果吗?这三张图是在同一个图表区吗?可能是第二个文件包含的数据太多了吗?两个文件相似。x的值为30,y的值为30。我看到的第三张图与另一张图不匹配。我不明白它从何处获取这些值。我不知道如何在这里添加图片(当你处于编辑模式时,应该有一个图标来添加图像,不是吗?我添加了图片。谢谢)有了图表,图像往往比文字或代码更能说明问题。你能显示结果吗?3个图形在同一图表区吗?可能是第2个文件包含太多数据吗?2个文件相似。x为30个值,y为30个值。我看到的第三个图形与其他图形不匹配。我不明白它从何处获取这些值。我不知道w如何在这里添加图片(当你处于编辑模式时,应该有一个图标来添加图片,不是吗?我添加了图片。谢谢)有了图表,图像往往比文字或代码更能说明问题。非常感谢!现在我明白了。在哪里可以阅读更多关于添加系列的内容?我不太清楚如何将第二个系列用于另一个文件您可以在文件对话框后添加系列:series s=chartGraphic.series.add(someSeriesName){ChartType=SerieChartType.Line};
。请使用一个好的名称,可能来自文件名。该名称将显示在图例中,但如果愿意,可以设置不同的'LegendText'。如果只想使用添加的系列,请先删除defautl系列:chartGraphic.series.Clear()
非常感谢!现在我明白了。我在哪里可以阅读更多关于添加系列的内容?我不太清楚如何将第二个系列用于另一个文件。您可以在文件对话框之后添加系列:series s=chartGraphic.series.add(someSeriesName){ChartType=SeriesChartType.Line};
。使用一个好的名称,可能来自文件名。名称将显示在图例中,但如果愿意,可以设置不同的'LegendText'。如果只想使用添加的系列,请先删除defautl系列:chartGraphic.series.Clear();