Please help me ,thanks a lot
How to draw a trend line ? like excel trend line
like this-->>
this is my file.cs ,use the Composite Chart ,but i don't know how to draw a trend line
----------------------------------------------------------------------------------------------------....using System.Data.OracleClient;using System.Web.Configuration;using Infragistics.UltraChart.Shared.Styles;using Infragistics.UltraChart.Resources.Appearance;using Infragistics.UltraChart.Core.Layers;using Infragistics.UltraChart.Resources;
/// <summary>/// /// </summary>public partial class DescCurve : System.Web.UI.Page,IRenderLabel{ DataSet ds = new DataSet(); protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) {
try { /*return dataset * * NY XHD2 XHA2 XHE2 -------------------- ---------- ---------- ---------- 200001 6885 1163 6035 * * */ OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); string s = "select Ny,sum(case when t.dydm='XHD2' then t.ycyl else 0 end) as XHD2,sum(case when t.dydm='XHA2' then t.ycyl else 0 end) as XHA2,sum(case when t.dydm='XHE2' then t.ycyl else 0 end) as XHE2 FROM pgxx_data_monthly t where ny like '200%' and (t.dydm='XHD2' or t.dydm='XHA2' or t.dydm='XHE2') group by ny order by ny asc"; OracleDataAdapter sa = new OracleDataAdapter(s, conn); conn.Open(); sa.Fill(ds, "QuerySelect"); conn.Close();
// Chart UltraChart1.DataSource = ds; UltraChart1.DataBind(); //Response.Write(ds.Tables[0].Columns[0].ToString()); //Response.End(); UltraChart1.ChartType = ChartType.Composite; UltraChart1.Width = 1024; UltraChart1.Height = 600; UltraChart1.TitleTop.Text = "desccurve"; UltraChart1.EnableCrossHair = true; UltraChart1.EmptyChartText = "data false!";
// add chartarea ChartArea myChartArea = new ChartArea(); UltraChart1.CompositeChart.ChartAreas.Add(myChartArea);
//add axis AxisItem myX = new AxisItem(); myX.OrientationType = AxisNumber.X_Axis; myX.DataType= AxisDataType.String; myX.Labels.ItemFormatString = "<ITEM_LABEL>"; // //http://help.infragistics.com/Help/NetAdvantage/NET/2007.3/CLR2.0/html/Chart_Creating_a_Composite_Chart_in_Code_Part_1_of_2.html myX.SetLabelAxisType = SetLabelAxisType.ContinuousData;
AxisItem myY = new AxisItem(); myY.OrientationType = AxisNumber.Y_Axis; myY.DataType = AxisDataType.Numeric; myY.Labels.ItemFormatString = "<DATA_VALUE:00.##>";
myChartArea.Axes.Add(myX); myChartArea.Axes.Add(myY);
//add series to Series collection. NumericSeries myseries1 = new NumericSeries(); myseries1.Label = "SeriesA"; //data bound myseries1.Data.DataSource = ds.Tables[0]; myseries1.Data.LabelColumn = ds.Tables[0].Columns[0].ToString(); myseries1.Data.ValueColumn = ds.Tables[0].Columns[1].ToString(); //myseries1.Data.LabelColumn = "NY"; //myseries1.Data.ValueColumn = "XHD2"; UltraChart1.CompositeChart.Series.Add(myseries1);
NumericSeries myseries2 = new NumericSeries(); myseries2.Label = "SeriesB"; myseries2.Data.DataSource = ds.Tables[0]; myseries2.Data.LabelColumn = ds.Tables[0].Columns[0].ToString(); myseries2.Data.ValueColumn = ds.Tables[0].Columns[2].ToString(); UltraChart1.CompositeChart.Series.Add(myseries2);
NumericSeries myseries3 = new NumericSeries(); myseries3.Label = "SeriesC"; myseries3.Data.DataSource = ds.Tables[0]; myseries3.Data.LabelColumn = ds.Tables[0].Columns[0].ToString(); myseries3.Data.ValueColumn = ds.Tables[0].Columns[3].ToString(); UltraChart1.CompositeChart.Series.Add(myseries3);
//add chart layer ChartLayerAppearance mylayer = new ChartLayerAppearance(); mylayer.ChartType = ChartType.LineChart; mylayer.ChartArea = myChartArea; mylayer.AxisX = myX; mylayer.AxisY = myY; mylayer.Series.Add(myseries1); mylayer.Series.Add(myseries2); mylayer.Series.Add(myseries3); this.UltraChart1.CompositeChart.ChartLayers.Add(mylayer);
//custom Tooltips
UltraChart1.Tooltips.Display = TooltipDisplay.MouseMove; UltraChart1.Tooltips.Format = TooltipStyle.Custom; UltraChart1.Tooltips.FormatString = "<CUSTOM>"; Hashtable labelHash = new Hashtable(); labelHash.Add("CUSTOM", this); this.UltraChart1.LabelHash = labelHash; } finally {
} } }
#region IRenderLabel
string IRenderLabel.ToString(Hashtable Context) { double displayY=(double)Context["DATA_VALUE"]; string dispayX=(string)Context["ITEM_LABEL"]; string customLabel = ""; //return label customLabel = displayY + "," +dispayX ; //customLabel = "OK"; return customLabel; }
#endregion
You can also create a composite chart with multiple line charts as layers. Each layer can take a line bound to a certain data column. Calculate the trend using your raw data and place it into an easily accessible data column. Using a NumericSeries object, collect that info and bind the NumericSeries to a chart layer.