我有很好的工作图表和股票类型图表。当我试图在这个图表区域添加线型系列时,我得到了大红色X.
Series ser = new Series(seriesName);
ser.ChartArea = "Default";
ser.Name = seriesName;
ser.ChartType=SeriesChartType.Line;
ser.Points.AddXY(1, 1);
ser.Points.AddXY(1, 2);
chart1.Series.Add(ser);
是否可以在一个图表区域中添加不同类型的系列?
修改
我尝试按照TaW的提议应用更改,但仍然会出现同样的错误。
string seriesName = dataGridView1.Rows[rowSelected].Cells[0].Value + "_" + curPeriod + "_" +"line" +dataPoints.Length;
Series ser = new Series(seriesName);
chart1.Series.Add(ser);
chart1.Series[seriesName].ChartArea = chart1.ChartAreas[0].Name;
chart1.Series[seriesName].ChartType = SeriesChartType.Line;
chart1.Series[seriesName].Points.AddXY(1, 1);
chart1.Series[seriesName].Points.AddXY(1, 2);
这是我的图表的初始化。
chart1.ChartAreas.Add(new ChartArea("Default"));
chart1.Series.Add(new Series("Series1"));
chart1.ChartAreas.Add(new ChartArea("Option"));
chart1.Series.Add(new Series("Series2"));
chart1.Series.Add(new Series("Series3"));
chart1.Series["Series2"].ChartArea = "Option";
chart1.Series["Series3"].ChartArea = "Option";
chart1.Series["Series1"].ChartArea = "Default";
chart1.Series["Series1"].ChartType = SeriesChartType.Stock;
chart1.Series["Series2"].ChartType = SeriesChartType.Line;
chart1.Series["Series3"].ChartType = SeriesChartType.Line;
chart1.Series["Series1"].BorderColor = Color.Green;
chart1.Series["Series1"].Color = Color.GreenYellow;
chart1.Series["Series2"].Color = Properties.Settings.Default.InnerPrice;
chart1.Series["Series3"].Color = Properties.Settings.Default.TemporaryPrice;
chart1.Series["Series1"]["PriceUpColor"] = "Red";
chart1.Series["Series1"]["PriceDownColor"] = "Yellow";
chart1.Series["Series1"].IsXValueIndexed = true;
chart1.Series["Series2"].IsXValueIndexed = false;
chart1.Series["Series3"].IsXValueIndexed = false;
chart1.Series["Series1"].XValueType = ChartValueType.DateTime;
答案 0 :(得分:1)
您的问题很可能来自于您在Series
准备1>} 之前准备Chart
的方式。
我发现在添加到图表之前,我甚至无法为Stock
系列添加点数!我收到的错误声称我只能为DataPoints
添加一个y值,这显然是错误的,因为已经设置了SeriesChartType.Stock
。
所以试试这个顺序:
chart1.Series.Clear();
string seriesName1 = "stock";
Series ser1 = chart1.Series.Add(seriesName1);
ser1.ChartArea = chart1.ChartAreas[0].Name;
ser1.Name = seriesName1;
ser1.ChartType = SeriesChartType.Stock;
ser1.BorderWidth = 3;
ser1.Points.AddXY(1, 44, 11, 34, 37); // x, high, low, open, close
ser1.Points.AddXY(2, 33, 11, 22, 33);
string seriesName2 = "line";
Series ser2 = chart1.Series.Add(seriesName2);
ser2.ChartArea = chart1.ChartAreas[0].Name;
ser2.Name = seriesName2;
ser2.ChartType = SeriesChartType.Line;
ser2.Points.AddXY(1, 44);
ser2.Points.AddXY(2, 33);
还要确保seriesName
变量包含正确的字符串!
<强>更新强>
查看到目前为止发布的完整代码,您似乎正在向Series
“默认”添加一个或多个ChartArea
,其中已包含已编入索引系列( “系列1”)。只有当Series
中的所有(其他)ChartArea
与第一个对齐时,才允许这样做,即包含相同数量的值。由于您只添加2 DataPoints
,我怀疑它们是......
将Series.IsXValueIndexed属性设置为true会导致所有系列 分配到相同的图表区域和X轴(主要或次要)到 被索引。您必须确保系列对齐。除此以外, Chart控件抛出异常。有关更多信息,请参阅 对齐数据。
注意强>:
当尝试显示未对齐系列以及索引系列时,您可以获得: