历史图表,值之间的距离不同

时间:2013-05-31 17:48:31

标签: c# asp.net-mvc-3 mschart

您好我想在我的ASP.NET MVC 3项目中呈现一个不同距离值的图表。因此我使用字符串表示xCords和浮点数用于yCords:

public FileContentResult CreateChart()
{
    string[] xCords; float[] yCords;

    [... "fill xCords an yCords" ...]

    Chart bytes = new Chart(width: 800, height: 400)
        .AddSeries(

            chartType: "line",
            xValue: xCords,
            yValues: yCords
         );

    return File(bytes.GetBytes("png"), "image/png");
}

问题是所有值之间的距离相同。 所以你几乎可以把它命名为条形图而不是点图: 我可以想象原因是x值的类型字符串,但我不知道 如何解决?

编辑:当我将xCords的类型更改为DateTime时,如何生成xCords:

    xCords = new DateTime[stockAquires.Count];
    {
        foreach (StockAquire stockAquire in stockAquires)
        {
            xCords[stockAquires.IndexOf(stockAquire)] = stockAquire.RatingTime;
        }
    }

StockAquire包括作为一个属性:RatingTime

stockAquires包含许多类型为StockAquire的条目

1 个答案:

答案 0 :(得分:0)

要在轴中使用DateTime,您需要做两件事:

  1. 将轴的数据类型设置为DateTime

  2. 使用DateTime将系列中的值从double转换为ToOADate

  3. 所以您的日期填充代码变为:

    double[] xCords;
    
    xCords = new double[stockAquires.Count];
    {
        foreach (StockAquire stockAquire in stockAquires)
        {
            xCords[stockAquires.IndexOf(stockAquire)] = stockAquire.RatingTime.ToOADate();
        }
    }
    

    然后在创建图表后,您需要显式设置x轴的数据类型:

    bytes.Series[0].XValueType = ChartValueType.DateTime;
    

    有关详细信息,请参阅this article