none
Bar Chart - Add a Horizontal Line

    Question

  • Hi,

    How do I add a horizontal line to my Bar Chart at point 0 on Y-Axis?

    Thanks.

    Wednesday, October 05, 2011 11:45 AM

Answers

  • This worked...

                // add horizontal line at point 0
                StripLine stripLine3 = new StripLine();
    
                // Set threshold line so that it is only shown once
                stripLine3.Interval = 0;
    
                // Set the threshold line to be drawn at the calculated mean of the first series
                stripLine3.IntervalOffset = 0;
    
                stripLine3.BackColor = Color.DarkGreen;
                stripLine3.StripWidth = 10;
    
                // Add strip line to the chart
                myChart.ChartAreas[0].AxisY.StripLines.Add(stripLine3);
    

    • Marked as answer by obrienkev Friday, October 07, 2011 11:15 AM
    Friday, October 07, 2011 11:15 AM

All replies

  • Hi,

    do you mean a custom drawn line thats independend from the charts data? You could handle the paint events for that (PostPaint after painting the Series)

    see http://social.msdn.microsoft.com/Forums/en-US/MSWinWebChart/thread/6a7ec829-2e65-4977-86a5-d94fb3c9d670 for an example of a custom drawn vertical line that interacts with the arrow keys (ctrl must be pressed also).

    Regards,

      Thorsten


    Thursday, October 06, 2011 12:45 AM
  • I just want the gridline to appear at point 0.

    I set

    AxisY.MajorGrid.Enabled = true

    but that drew gridlines for all points. Is it possible just to set 1 gridline?

    Thanks


    • Edited by obrienkev Thursday, October 06, 2011 8:53 AM
    Thursday, October 06, 2011 8:53 AM
  • The Y-axis on a Bar chart is the horizontal one, you either mean a Column chart or a vertical line.

    I explain four different ways to show a line on a chart in this thread.

    Here's number five that may work for your particular case.

    5) Adjust the MajorGrid.Interval and IntervalOffset to get a single line at position 0 (assuming AxisY.Minimum is a negative value)

    	'RecalculateAxesScale to get the actual values for the automatically calculated axis.min & max.
    	chart1.ChartAreas(0).RecalculateAxesScale()
    
    	'Set the majorgrid interval to something *big* for the gridline to only show once.
    	chart1.ChartAreas(0).AxisY.MajorGrid.Interval = Math.Abs(chart1.ChartAreas(0).AxisY.Minimum) + Math.Abs(chart1.ChartAreas(0).AxisY.Maximum)
    
    	'Set the majorgrid interval offset so that the first gridline appears at position 0.
    	chart1.ChartAreas(0).AxisY.MajorGrid.IntervalOffset = Math.Abs(chart1.ChartAreas(0).AxisY.Minimum)
    

    BTW, care to report back on this thread and this one? Did you find a solution for the questions you asked?
    Thursday, October 06, 2011 10:24 AM
    Moderator
  • This worked...

                // add horizontal line at point 0
                StripLine stripLine3 = new StripLine();
    
                // Set threshold line so that it is only shown once
                stripLine3.Interval = 0;
    
                // Set the threshold line to be drawn at the calculated mean of the first series
                stripLine3.IntervalOffset = 0;
    
                stripLine3.BackColor = Color.DarkGreen;
                stripLine3.StripWidth = 10;
    
                // Add strip line to the chart
                myChart.ChartAreas[0].AxisY.StripLines.Add(stripLine3);
    

    • Marked as answer by obrienkev Friday, October 07, 2011 11:15 AM
    Friday, October 07, 2011 11:15 AM