我很难在Dundas图表上绘制系列数据。它似乎无法正确地绑定DateTime值。
以下是最小图表生成代码:
public static void GenerateMultiSeriesChartImage<T,U>(List<ChartData<T,U>> chartData, string chartTitle,
string xAxisTitle, string yAxisTitle, string xAxisValue, string yAxisValue, string chartFileName)
{
Dundas.Charting.WebControl.Chart chart = new Dundas.Charting.WebControl.Chart();
// Setting some chart properties
Dundas.Charting.WebControl.Legend legend = new Dundas.Charting.WebControl.Legend();
// I'm setting the legend properties
chart.Legends.Add(legend);
// Setting the border skin
Dundas.Charting.WebControl.Title title = new Dundas.Charting.WebControl.Title();
title.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold);
// Set custom chart title
title.Text = chartTitle;
chart.Titles.Add(title);
int cnt = 1;
foreach (ChartData<T,U> dataRecord in chartData)
{
Dundas.Charting.WebControl.Series series = new Dundas.Charting.WebControl.Series();
series.Name = dataRecord.SeriesName;
series.BorderColor = System.Drawing.ColorTranslator.FromHtml("#646464");
series.BorderWidth = 2;
series.Type = Dundas.Charting.WebControl.SeriesChartType.Line;
series.MarkerBorderColor = System.Drawing.ColorTranslator.FromHtml("#646464");
series.ShadowOffset = 1;
// Set X & Y axis ValueMembers
series.ValueMembersY = yAxisValue;
series.ValueMemberX = xAxisValue;
series.XValueType = dataRecord.XValueType;
series.YValueType = dataRecord.YValueType;
series.Points.DataBindXY(dataRecord.XAxisValues, xAxisTitle, dataRecord.YAxisValues, yAxisTitle);
chart.Series.Add(series);
cnt++;
}
Dundas.Charting.WebControl.ChartArea chartArea = new Dundas.Charting.WebControl.ChartArea();
chartArea.BackColor = System.Drawing.Color.Lavender;
chartArea.Name = "Default";
chartArea.ShadowOffset = 2;
chartArea.AxisY.Title = yAxisTitle;
chartArea.AxisY.MajorGrid.LineColor = System.Drawing.Color.LightSteelBlue;
chartArea.AxisY.MajorGrid.LineStyle = Dundas.Charting.WebControl.ChartDashStyle.Dash;
chartArea.AxisX.Title = xAxisTitle;
chartArea.AxisX.MajorGrid.LineColor = System.Drawing.Color.LightSteelBlue;
chartArea.AxisX.MajorGrid.LineStyle = Dundas.Charting.WebControl.ChartDashStyle.Dash;
chartArea.Area3DStyle.WallWidth = 0;
chart.ChartAreas.Add(chartArea);
chart.Save("C:/charts/" + chartFileName, Dundas.Charting.WebControl.ChartImageFormat.Png);
}ChartData类只是一个帮助器,用于包含我的系列以及关于它们的一些元数据:
public class ChartData<X,Y>
{
public List<X> XAxisValues { get; private set; }
public List<Y> YAxisValues { get; private set; }
public ChartValueTypes XValueType { get; private set; }
public ChartValueTypes YValueType { get; private set; }
public string SeriesName { get; private set; }
public ChartData(string seriesName, ChartValueTypes xValueType, ChartValueTypes yValueType)
{
XAxisValues = new List<X>();
YAxisValues = new List<Y>();
SeriesName = seriesName;
XValueType = xValueType;
YValueType = yValueType;
}
public ChartData(string seriesName, X[] xAxisValues, Y[] yAxisValues, ChartValueTypes xValueType, ChartValueTypes yValueType)
{
XAxisValues = new List<X>(xAxisValues);
YAxisValues = new List<Y>(yAxisValues);
SeriesName = seriesName;
XValueType = xValueType;
YValueType = yValueType;
}
}您可以在这里看到XValues和YValues集合的内容:https://docs.google.com/spreadsheet/pub?key=0AtV11BVzMrGYdDdrdjY1WC1wc09aV0E3cmo3VkpJSEE&output=html
我得到了以下图表(注意到日期完全错了,):

XValueType是DateTime,YValueType是Int
series.XValueType = dataRecord.XValueType; // DateTime
series.YValueType = dataRecord.YValueType; // Int当我试图绘制60个数值时,情况就变得更糟了:

发布于 2012-12-20 19:29:42
刚刚发现了问题所在:xAxisValue应该是“约会”,而我把它当作“日”。
https://stackoverflow.com/questions/13977294
复制相似问题