1

嗨,我想在我的 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 类型的条目

4

1 回答 1

0

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

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

  2. 将系列中的值从 转换DateTimedoubleusing ToOADate

因此,您的日期填充代码变为:

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;

有关详细信息,请参阅这篇文章

于 2013-05-31T18:08:20.873 回答