Page 1 of 2

Map 0 from Axes.Left to 0 from Axes.Right

Posted: Mon Jul 12, 2010 7:28 pm
by 13045482
I have chart with dollar amount on left axes and non dollar value on right axis. If both sides have just positive values it working fine. In my case left axis has negative and positive values, but right axis has just positive. And 0 from right axis did not line up with 0 on left axis. How can I fix it? Line up 0 from both axis.

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Tue Jul 13, 2010 9:24 am
by 10050769
Hello Neelman,


You could do a similar code that next example that works fine here with last version of TeeChart .Net:

Code: Select all

           private Steema.TeeChart.Styles.Line line1;
           private void InitializeChart()
           {
               Random  rnd = new Random();
               tChart1.Aspect.View3D = false;
               line1 = new Steema.TeeChart.Styles.Line(tChart1.Chart);
               line1.FillSampleValues();
               line1.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Both;
              
           }
Could you please say us if previous lines of code works as you want? If it in not a good solution for you, please you could modify the code because we can reproduce exactly, your problem here and we can try to make a solution for you.

I hope will helps.

Thanks,

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Wed Jul 14, 2010 3:26 pm
by 13045482
I have TeeChart version 3.5.3700.30575 and this example did not work. Problem still exists: 0 from left Axis did not line up with 0 from right axis in case if left value below 0.
Please advise.

Thnaks.

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Thu Jul 15, 2010 10:48 am
by 10050769
Hello Neelam,


I have made other code using SetMinMax() property that allow align correctly Right and Left axes values. I think that use similar code as next for solves your problem.

Code: Select all

  private Steema.TeeChart.Styles.Line line1, line2;
        private void InitializeChart()
        {
            double MinValue, MaxValue;
            tChart1.Aspect.View3D = false;
            line1 = new Steema.TeeChart.Styles.Line(tChart1.Chart);
            line2 = new Steema.TeeChart.Styles.Line(tChart1.Chart);

            line1.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Left;
            line2.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Right;

            for (int i = 0; i < 10; i++)
            {
                if (i < 5)
                {
                    line1.Add(i * 2, -5 + i);

                }
                else if (i == 5)
                {
                    line1.Add(i * 2, 0);
                }
                else
                {
                    line1.Add(i * 2, i - 5);
                }
                line2.Add(i, i);

            }

           MinValue= Math.Min(line1.MinYValue(), line2.MinYValue());

           MaxValue = Math.Max(line1.MaxYValue(), line2.MaxYValue());

            tChart1.Axes.Left.SetMinMax(MinValue, MaxValue);
            tChart1.Axes.Right.SetMinMax(MinValue,MaxValue);
        }
Could you please, tell us if previous code works as you want?

I hope will helps.

Thanks,

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Thu Jul 22, 2010 5:44 pm
by 13045482
This example is different from my objective. Left and Right axes have different scales. I cannot set same scale for left and right axis. In my case left axis has one scale (dollar amount) and right axis has another scale (non dollar numbers). If left and right axes have positive values it’s aligning correctly, because its starts from 0(Min=0). But if left axis has negative value (Min<0 for example= -1980) and right axis has just positive number (Min=0) it aligns -1980 on left side to 0 on right side. I need to adjust right axis scale to line up 0 from left axis to 0 on right axis.

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Fri Jul 23, 2010 4:01 pm
by yeray
Hi Neelam,

We'll study it and we'll be back to you here asap.

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Tue Jul 27, 2010 10:58 am
by 10050769
Hello Neelam,

I have made a simple example using property of axes, EndPosition, and I think that you can use it in your application for solve your problem with axes.

Code: Select all

    public Form1()
        {
            InitializeComponent();
            InitializeChart();
        }
        private Steema.TeeChart.Styles.Line lineSeries1;

        private Steema.TeeChart.Styles.Line line1, line2;
        private void InitializeChart()
        {
           
            tChart1.Aspect.View3D = false;
            line1 = new Steema.TeeChart.Styles.Line(tChart1.Chart);
            line2 = new Steema.TeeChart.Styles.Line(tChart1.Chart);

            line1.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Left;
            line2.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Right;

            for (int i = 0; i < 10; i++)
            {
                if (i < 5)
                {
                    line1.Add(i * 2, -5 + i);

                }
                else if (i == 5)
                {
                    line1.Add(i * 2, 0);
                }
                else
                {
                    line1.Add(i * 2, i - 5);
                }
                line2.Add(i, i);

            }
            double MinValue, MaxValue;
            MinValue = Math.Min(line1.MinYValue(), line2.MinYValue());

            MaxValue = Math.Max(line1.MaxYValue(), line2.MaxYValue());

            tChart1.Axes.Left.SetMinMax(MinValue, MaxValue);
            tChart1.Axes.Right.SetMinMax(line2.MinYValue(), line2.MaxYValue());
            tChart1.Draw();

            int zeroPos = tChart1.Axes.Left.CalcPosValue(0.0);
            int axisSize = tChart1.Axes.Left.IAxisSize;

            tChart1.Axes.Right.StartEndPositionUnits = Steema.TeeChart.PositionUnits.Pixels;
            tChart1.Axes.Right.EndPosition = zeroPos - 34; 
           
        }
Could you please say us if previous code works as you want?

I hope will helps.

Thanks,

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Fri Jul 30, 2010 6:32 pm
by 13045482
Can you explain from last line of code 'tChart1.Axes.Right.EndPosition = zeroPos - 34; ' what is 34? What is comes from?

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Mon Aug 02, 2010 12:18 pm
by 10050769
Hello Neelman,
Can you explain from last line of code 'tChart1.Axes.Right.EndPosition = zeroPos - 34; ' what is 34?
Value 34 is a value that I calculate, because axes right position, exactly matches with position 0 of left axis as there are a difference some pixels when you draw axis right that start to zeroPos. If you prefer you can calculate it value using next lines of code:

Code: Select all

           int axisSize = (int)(tChart1.Axes.Right.IAxisSize / tChart1.Axes.Right.MaxYValue);
            tChart1.Axes.Right.StartEndPositionUnits = Steema.TeeChart.PositionUnits.Pixels;
            tChart1.Axes.Right.EndPosition = zeroPos - (axisSize+8);
Can you please, say us if our solution works fine for you?

I hope will helps.

Thanks,

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Tue Aug 10, 2010 3:42 pm
by 13045482
Still not working as expected. In line "tChart1.Axes.Right.EndPosition = zeroPos - (axisSize+8);" what is meanning for 8?

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Wed Aug 11, 2010 9:48 am
by 10050769
Hello Nelman,

We don't sure that you want do exactly. Could you please send us a simple code, so we can try to find a good solution for you?


Thanks,

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Tue Sep 07, 2010 3:53 pm
by 13045482
Sandra wrote:Hello Nelman,

We don't sure that you want do exactly. Could you please send us a simple code, so we can try to find a good solution for you?


Thanks,
Below is a simple code to reproduce this issue. Create project, add chart control and name it tcCurve.
Run project and on chart you will see issue.

Thanks.

Code: Select all

Private Sub LoadChart()
        Dim arBarSeriesA As New Steema.TeeChart.Styles.Bar
        Dim arBarSeriesB As New Steema.TeeChart.Styles.Bar
        Dim arBarSeriesA1 As New Steema.TeeChart.Styles.Bar
        Dim arBarSeriesB1 As New Steema.TeeChart.Styles.Bar

        tcCurve.Axes.Left.Grid.Visible = True
        tcCurve.Axes.Left.Grid.Style = Drawing2D.DashStyle.Solid


        arBarSeriesA.Labels.Add(Format(3000, "$##,##0.00"))
        arBarSeriesA.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Right
        arBarSeriesA.Add(3000)

        arBarSeriesA.ShowInLegend = True
        arBarSeriesA.BarWidthPercent = 120
        arBarSeriesA.Marks.Angle = 90
        arBarSeriesA.OffsetPercent = -30

        tcCurve.Series.Add(arBarSeriesA)

        arBarSeriesA1.Labels.Add(Format(2560, "$##,##0.00"))
        arBarSeriesA1.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Right
        arBarSeriesA1.Add(2560)

        arBarSeriesA1.ShowInLegend = True
        arBarSeriesA1.BarWidthPercent = 120
        arBarSeriesA1.Marks.Angle = 90
        arBarSeriesA1.OffsetPercent = -30

        tcCurve.Series.Add(arBarSeriesA1)



        arBarSeriesB.Labels.Add(-1000)
        arBarSeriesB.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Left
        arBarSeriesB.Add(-1000)
        arBarSeriesB.ShowInLegend = True
        arBarSeriesB.BarWidthPercent = 120
        arBarSeriesB.Marks.Angle = 90
        arBarSeriesB.OffsetPercent = -30

        tcCurve.Series.Add(arBarSeriesB)

        arBarSeriesB1.Labels.Add(1500)
        arBarSeriesB1.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Left
        arBarSeriesB1.Add(1500)
        arBarSeriesB1.ShowInLegend = True
        arBarSeriesB1.BarWidthPercent = 120
        arBarSeriesB1.Marks.Angle = 90
        arBarSeriesB1.OffsetPercent = -30

        tcCurve.Series.Add(arBarSeriesB1)

        tcCurve.Refresh()


    End Sub

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Wed Sep 08, 2010 2:21 pm
by narcis
Hi Neelam,

Can you please try running the example Sandra posted? I think it already does what you are asking for. You can convert them from C# to VB using any of those free on-line conversors:

http://www.carlosag.net/Tools/CodeTranslator/
http://authors.aspalliance.com/aldotnet ... slate.aspx
http://www.developerfusion.com/tools/co ... arp-to-vb/
http://converter.telerik.com/

If Sandra example don't fit your needs please net us know which is the exact problem you have with it.

Thanks in advance.

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Mon Sep 13, 2010 5:59 pm
by 13045482
Did you try Sandra's example on my issue? It simple does not work for my case. I do not care about language (VB.net or C#).
Did you run my code? Did you see issue?

Thanks.

Re: Map 0 from Axes.Left to 0 from Axes.Right

Posted: Tue Sep 14, 2010 10:39 am
by 10050769
Hello Neelam

I have modified your code, adding part of my code where I calculate value and position of axes (Right, Left). Please, check if next code works for you.

Code: Select all

  public Form1()
        {
            InitializeComponent();
            LoadChart();
        }

        private void LoadChart()
        {
            Steema.TeeChart.Styles.Bar arBarSeriesA = new Steema.TeeChart.Styles.Bar();
            Steema.TeeChart.Styles.Bar arBarSeriesB = new Steema.TeeChart.Styles.Bar();
            Steema.TeeChart.Styles.Bar arBarSeriesA1 = new Steema.TeeChart.Styles.Bar();
            Steema.TeeChart.Styles.Bar arBarSeriesB1 = new Steema.TeeChart.Styles.Bar();

            tChart1.Axes.Left.Grid.Visible = true;
            tChart1.Axes.Left.Grid.Style = System.Drawing.Drawing2D.DashStyle.Solid;

            arBarSeriesA.Labels.Add("$##,##0.00");
            arBarSeriesA.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Right;
            arBarSeriesA.Add(3000);

            arBarSeriesA.ShowInLegend = true;
            arBarSeriesA.BarWidthPercent = 120;
            arBarSeriesA.Marks.Angle = 90;
            arBarSeriesA.OffsetPercent = -30;

            tChart1.Series.Add(arBarSeriesA);

            arBarSeriesA1.Labels.Add("$##,##0.00");
            arBarSeriesA1.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Right;
            arBarSeriesA1.Add(2560);

            arBarSeriesA1.ShowInLegend = true;
            arBarSeriesA1.BarWidthPercent = 120;
            arBarSeriesA1.Marks.Angle = 90;
            arBarSeriesA1.OffsetPercent = -30;

            tChart1.Series.Add(arBarSeriesA1);



            arBarSeriesB.Labels.Add(-1000);
            arBarSeriesB.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Left;
            arBarSeriesB.Add(-1000);
            arBarSeriesB.ShowInLegend = true;
            arBarSeriesB.BarWidthPercent = 120;
            arBarSeriesB.Marks.Angle = 90;
            arBarSeriesB.OffsetPercent = -30;

            tChart1.Series.Add(arBarSeriesB);

            arBarSeriesB1.Labels.Add(1500);
            arBarSeriesB1.VertAxis = Steema.TeeChart.Styles.VerticalAxis.Left;
            arBarSeriesB1.Add(1500);
            arBarSeriesB1.ShowInLegend = true;
            arBarSeriesB1.BarWidthPercent = 120;
            arBarSeriesB1.Marks.Angle = 90;
            arBarSeriesB1.OffsetPercent = -30;

            tChart1.Series.Add(arBarSeriesB1);


            double MinValue, MaxValue;
            MinValue = Math.Min(Math.Min(arBarSeriesA.MinYValue(), arBarSeriesA1.MinYValue()), Math.Min(arBarSeriesB.MinYValue(), arBarSeriesB1.MinYValue()));
            MaxValue = Math.Max(Math.Max(arBarSeriesB.MaxYValue(), arBarSeriesB1.MaxYValue()), Math.Max(arBarSeriesA.MaxYValue(), arBarSeriesA1.MaxYValue()));
            tChart1.Axes.Left.SetMinMax(MinValue, MaxValue);
            tChart1.Axes.Right.SetMinMax(Math.Min(arBarSeriesA.MinYValue(), arBarSeriesA1.MinYValue()), Math.Max(arBarSeriesA.MaxYValue(), arBarSeriesA1.MaxYValue()));
            tChart1.Draw();

            int zeroPos = tChart1.Axes.Left.CalcPosValue(0.0);
            int axisSize = tChart1.Axes.Left.IAxisSize;

            tChart1.Axes.Right.StartEndPositionUnits = Steema.TeeChart.PositionUnits.Pixels;
            tChart1.Axes.Right.EndPosition = zeroPos - 38; 

        }
If previous code doesn’t work for you, could you please, modify or explain what is your exactly problem? Because we can try help you.

I hope will helps.

Thanks,