I am trying to setup the Datasource for a Column / Line Chart so I can show monthly quantities as columns, and a trend line. Here is my data:
Unfortunately, the Column / Line sample code is incomprehensible to me. I am able to create a Column chart with the following code. How do I change this code for a Column / Line chart where Quantity is the columns & ThreeMoAvg is the line? Thanks!
public struct Hist { public string Month; public float Quantity; public float ThreeMoAvg; }
private Hist[ arrHist;
private void buttonDmdHist_Click(object sender, EventArgs e) { // hide the chart this.ultraChartResults.Visible = false;
//attach the history to the chart this.ultraChartResults.DataSource = this.GetHistDataTable(); this.ultraChartResults.DataBind();
// setup X labels this.ultraChartResults.Axis.X.Labels.Visible = false; this.ultraChartResults.Axis.X.Labels.SeriesLabels.Visible = true; this.ultraChartResults.Axis.X.Labels.SeriesLabels.Orientation = Infragistics.UltraChart.Shared.Styles.TextOrientation.VerticalLeftFacing;
// show the chart this.ultraChartResults.Visible = true; }
private DataTable GetHistDataTable() { // Turn the array into a datatable DataTable retDT = new DataTable(); retDT.Columns.Add("Month", typeof(String)); retDT.Columns.Add("Quantity", typeof(Single)); for (int index = 0; index < this.arrHist.Length; index++) retDT.Rows.Add(new Object[ { this.arrHist[index].Month, this.arrHist[index].Quantity }); return retDT; }
DataTable dt = new DataTable();dt.Columns.Add("col1", typeof(string));dt.Columns.Add("col2", typeof(int));dt.Columns.Add("col3", typeof(int));dt.Rows.Add(new object[ { "J 03", 1208, 1208 });dt.Rows.Add(new object[ { "F 03", 1156, 1182 });dt.Rows.Add(new object[ { "M 03", 1277, 1214 });dt.Rows.Add(new object[ { "A 03", 1253, 1229 });dt.Rows.Add(new object[ { "M 03", 1246, 1259 });dt.Rows.Add(new object[ { "J 03", 1160, 1220 });dt.Rows.Add(new object[ { "J 03", 1227, 1211 });
this.ultraChart1.ColumnLineChart.ColumnData.DataSource = dt;this.ultraChart1.ColumnLineChart.ColumnData.IncludeColumn("col3", false);this.ultraChart1.ColumnLineChart.ColumnData.DataBind();this.ultraChart1.ColumnLineChart.LineData.DataSource = dt;this.ultraChart1.ColumnLineChart.LineData.IncludeColumn("col2", false);this.ultraChart1.ColumnLineChart.LineData.SwapRowsAndColumns = true;this.ultraChart1.ColumnLineChart.LineData.DataBind();
Hi there,
a question regarding the ColumnLineChart and its axis:
In case I do it the way you did it in the above sample how could I make the Y and the Y2 axis to have the same intervals. The one of the line-part is not the same as the one of the column-part though this is - in my eyes - the way it should be.
Working on an old version 2006.1 - so I can't use compositecharts because wanting to add a custom layer to the ColumnLineChart.
Regards and thanks in advance
Daniel
Great! Thanks!
daamruth,
You will want to set properties on both the Y and Y2 axes to make them have the same intervals. Your code should look something like:
this.ultraChart1.Axis.Y.RangeType = Infragistics.UltraChart.Shared.Styles.AxisRangeType.Custom; this.ultraChart1.Axis.Y.RangeMin = 0; this.ultraChart1.Axis.Y.RangeMax = 20; this.ultraChart1.Axis.Y.TickmarkStyle = Infragistics.UltraChart.Shared.Styles.AxisTickStyle.DataInterval; this.ultraChart1.Axis.Y.TickmarkInterval = 2;
this.ultraChart1.Axis.Y2.RangeType = Infragistics.UltraChart.Shared.Styles.AxisRangeType.Custom; this.ultraChart1.Axis.Y2.RangeMin = 0; this.ultraChart1.Axis.Y2.RangeMax = 20; this.ultraChart1.Axis.Y2.TickmarkStyle = Infragistics.UltraChart.Shared.Styles.AxisTickStyle.DataInterval; this.ultraChart1.Axis.Y2.TickmarkInterval = 2;