偏移图表控件中的第二个系列,其中 x 轴是一个字符串

offset a second series in chart control where x axis is a string

如何在图表控件中偏移第二个系列,其中 x 轴是 MS 图表控件中的字符串。

我想将 x 轴保留为字符串。

在下面的问题示例中,我希望 Serise 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;

目前显示如下:

一旦您决定将 x 值添加为字符串,就无法正确处理系列中的数据。这是因为当字符串转换为 double 时它们会丢失,导致所有 x 值都为 0d.

所以你不能引用它们的值。相反,您可以简单地插入必要数量的 empty DataPoints。所以如果你想用三个数据点偏移系列,你可以写:

for (int i = 0; i < 3; i++)
{
   DataPoint dp0 = new DataPoint() 
                  {XValue = 0, IsEmpty = true, Color = Color.Transparent };
   test2.Points.Insert(0, dp0);
}

请注意,您可能想要控制 Empty DataPointsSeries 中的显示方式,请在 Series.EmptyPointStyle 中设置。

另请注意,在添加新的之前,我已经清除了默认值 series1: chart1.Series.Clear();

更新:我刚刚才注意到你的第二个问题。

这里的问题是,通常的解决方案非常简单直接,但行不通。这是:

  chart1.ChartAreas[0].AxisX.Minimum = 1;

只要您的值是数字,这就可以了。但是,当您将它们添加为各种内容的字符串 none 时,例如:Interval、IntervalOffset、Minimum、Maximum 或 zomme 和范围设置将起作用。

所以真正正确的解决办法是按你应该的方式添加数据。这是一个例子:

    for (int i = 1; i < 7; i++)
    {

        int px = test1.Points.AddXY(x, i);
        test1.Points[px].AxisLabel = "test" + x;
        x++;
    }

这将创建您想要的输出并仍然保留数据点的 x 值: