Skip to main content

DevExpress C# Chart Tutorial

Hello , this blog post about Charting in DevExpress , I faced many problems I visited hundreds of pages to solve this problems , actually it was the first time I use DevExpress Charts, Work is not like school or university , in school if you don't know thing you can learn it any time you want , in work you have to do today task yesterday, I like to share my knowledge and skills with you , I hope this Post help you .

// clear series on chart 
chart.Series.Clear();

// clear Titles of chart
chart.Titles.Clear();

// legend alignment 
chart.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Center;
chart.Legend.AlignmentVertical = LegendAlignmentVertical.Bottom;

chart.Legend.Direction = LegendDirection.LeftToRight;

// creating series
// series view Type example Line
DevExpress.XtraCharts.Series series = new DevExpress.XtraCharts.Series("series name ", ViewType.Line);

// add title 
DevExpress.XtraCharts.ChartTitle chtTitle = new DevExpress.XtraCharts.ChartTitle();
chtTitle.Text = "Chart Ttile";

chart.Titles.Add(chtTitle);

// crosshair Option 
// set it either true or false 
chart.CrosshairOptions.ShowGroupHeaders = false;

// to formate crosshair option // F4 mean 4 Decimal Places

chart.Series[indx].CrosshairEnabled = DefaultBoolean.True;

hart.Series[indx].CrosshairLabelPattern = "  {S} \n x-AxisLabel :{A:F4}\n Y-AxisLabel: {V:F4}";

// Axis
// First you need to cast your chart diagram to XYDiagram
 XYDiagram diagram = (XYDiagram)chart.Diagram;

// setting Axis
// Customize the appearance of the X-axis title.
diagram.AxisX.Title.Visible = true;
diagram.AxisX.Title.Alignment = StringAlignment.Center;
diagram.AxisX.Title.Text = "Axis-X";

diagram.AxisX.Title.TextColor = Color.Red;
diagram.AxisX.Title.Antialiasing = true;
diagram.AxisX.Title.Font = new System.Drawing.Font("Tahoma", 14, FontStyle.Bold);


// Customize the appearance of the Y-axis title.
diagram.AxisY.Title.Visible = true;
diagram.AxisY.Title.Alignment = StringAlignment.Center;
diagram.AxisY.Title.Text = "Axis-y";
diagram.AxisY.Title.TextColor = Color.Blue;
diagram.AxisY.Title.Antialiasing = true;

diagram.AxisY.Title.Font = new System.Drawing.Font("Tahoma", 14, FontStyle.Bold);


// scaling Axis 
// lograthmic scale 
diagram.AxisX.Logarithmic = true;
diagram.AxisX.LogarithmicBase = 10;

diagram.AxisY.Logarithmic = true;
diagram.AxisY.LogarithmicBase = 10; 

// zooming
diagram.EnableAxisXZooming = true;
// Individually enable zooming for panes.
diagram.DefaultPane.EnableAxisXZooming = DefaultBoolean.True;
//diagram.Panes[0].EnableAxisXZooming = DefaultBoolean.False;

// Specify how zooming is performed.
diagram.ZoomingOptions.UseKeyboard = false;
diagram.ZoomingOptions.UseKeyboardWithMouse = true;
diagram.ZoomingOptions.UseMouseWheel = true; 

// setting Ranges of Axis 
 diagram.AxisX.Range.MinValue = 0.001;
 diagram.AxisX.Range.MaxValue = 1000;

 diagram.AxisY.Range.MinValue = 0.1;

 diagram.AxisY.Range.MaxValue = 10000;

// Change how Series is displayed 
LineSeriesView view = (LineSeriesView)chart.Series[indx].View;

view.Color = Color.Red;

// secondary Axis 
 SecondaryAxisY myAxisY;
myAxisY = new SecondaryAxisY("Axis Name"); 

// assign series to secondry Axis
((LineSeriesView)series.View).AxisY = myAxisY;

I finished this tutorial if you have any suggestions contact me @ :
mail : AhmedGhazey@gmail.com 
twitter : AhmedGhazey
facebook: www.facebook.com/AhGhazey

thank you for reading , I hope you like the post .


Ahmed Ghazey



Comments

  1. the code did not mention what is indx and theres an error where my code does not recognize the diagram after casting the chartcontorl

    ReplyDelete
    Replies
    1. indx is integer to define series index

      Delete
  2. Good post! The DevExpress controls are powerful but overly complex and poorly documented. This is a very nice guide. The diagram.AxisX.Range.MinValue has now been deprecated with version 14 and replaced by WholeRange which is quite unintuitive: diagram.AxisX.WholeRange.SetMinMaxValues(min, max);

    Also, it will blow up if you try calling it before there's any data in your bound datatable. This is extremely poor error handling (non-existent really) on DevExpress' part. You need to watch out for it.

    ReplyDelete

Post a Comment

Popular posts from this blog

Recursion

Recursion is a programming technique which function calls itself , this seems strange , however it is one of the most interested and effective technique in programming. it helps you write code in less statements and provides unique conceptual frame work to solve problems. lets discus some problems to know how it works : first example Triangular Numbers : it is series like : 1,3,6,10,15,21........ etc our program should get the nth term in the series, the numbers in this series called triangular numbers due to they can be visualized as a triangle. triangular numbers fig 1 finding the nth term using a loop see this figure : loop adding 1+2+3+4 and so on code is easy  , a loop will add numbers from n to 0 like this int triangle(int n) { int total = 0; while(n > 0) // until n is 1 { total = total + n; // add n (column height) to total --n; // decrement column height } return total; } it easy enough and for sure it is fast . before we start the recu...

LeetCode Problem #19 Remove Nth Node From End of List

Solution for LeetCode Problem #19 Remove Nth Node From End of List it is linked list problem can be solved with multiple solutions, but I'm gonna solve it with fastest solution in java. Problem link we should assign dummy_head it is common while solving linked list problems  Assign 2 iterators slow and fast both equals to dummy_head we don't know the length of the list but we know it is always valid, so we will move with a window of size n+1 when we reach the end by the fast iterator the slow iterator will be in the node n+1 from the last , right? we will assign slow.next to be equal slow.next.next we are dropping the node n from last, got it? we will return dummy_head.next Thank you, AhmedG