如何在图表控件中偏移第二个系列,其中x轴是MS图表控件中的字符串。
我想将x轴保持为字符串。
在我的问题的下面示例中,我希望将Test2设置为从x轴位置“test 4”开始,但是目前它们都是从“test 1”开始,即使第一个x轴点位于“test 4”系列Test2?
我想我正在寻找一个偏移量,我可以说系列Test2从x轴点4开始,或者是轴的索引,我可以明确地添加点,但我看不出怎么做。
此外,但问题较少,如何在Y轴上启动TEST1系列?
这是我的困境的一个简单例子:
Series test1 = new Series("Test1");
Series test2 = new Series("Test2");
int x =1;
test1.XValueType = ChartValueType.Date;
for (int i = 1; i < 7; i++)
{
test1.Points.AddXY("test" + x.ToString(), i);
x++;
}
chart1.Series.Add(test1);
x = 4; // I would like to start plotting this series at "test 4"
for (int i = 5; i < 10; i++)
{
test2.Points.AddXY("test" + x.ToString(), i);
x++;
}
chart1.Series.Add(test2);
foreach (var series in chart1.Series)
{
series.ChartType = SeriesChartType.Line;
series.BorderWidth = 5;
}
chart1.ChartAreas[0].AxisX.LabelStyle.Angle = 45;
chart1.ChartAreas[0].AxisX.LabelStyle.Interval = 1;
答案 0 :(得分:1)
一旦决定将x值添加为字符串,就无法正确使用系列中的数据。这是因为当字符串转换为double时它们会丢失,导致所有x值都为0d
。
所以你不能参考他们的价值观。相反,您只需插入必要数量的空 DataPoints
即可。因此,如果您想将系列偏移三个数据点,您可以写:
for (int i = 0; i < 3; i++)
{
DataPoint dp0 = new DataPoint()
{XValue = 0, IsEmpty = true, Color = Color.Transparent };
test2.Points.Insert(0, dp0);
}
请注意,您可能希望控制Series.EmptyPointStyle
中Empty DataPoints
设置Series
的显示方式。
另请注意,我在添加新内容之前已清除了默认series1
:chart1.Series.Clear();
。
更新:我刚才注意到你的第二个问题。
这里的问题是,通常的解决方案,非常简单和直接,不会起作用。这是:
chart1.ChartAreas[0].AxisX.Minimum = 1;
如果只有您的值是数字,这将有效。但是当你将它们添加为字符串时,没有各种各样的东西,例如:Interval,IntervalOffset,Minimum,Maximum或zomme和range设置都可以。
因此,真正正确的解决方案是按您的意愿添加数据。这是一个例子:
for (int i = 1; i < 7; i++)
{
int px = test1.Points.AddXY(x, i);
test1.Points[px].AxisLabel = "test" + x;
x++;
}
这会创建所需的输出并仍保留DataPoints的x值: