Page 1 of 1
Logarithmic scaling using Legend Palette?
Posted: Thu Feb 16, 2012 2:18 am
by 15661487
Hi,
I'm trying to scale the legend palette logarithmically using code but this doesn't seem to work. It does work in the designer on the left axis, but apparently not in code. I'm actually not convinced that <legendpalette>.Chart.Axes.Left.... works at all. Can you confirm whether or not it should?
Thanks,
Michael
Re: Logarithmic scaling using Legend Palette?
Posted: Mon Feb 20, 2012 1:15 pm
by 10050769
Hello Michael,
Ok. I have made an example using left axis with logarithmic scale and surface with aleatory values and the Legend palette tool, update, see next:
Code: Select all
Steema.TeeChart.Styles.Surface series1;
Steema.TeeChart.Tools.LegendPalette legendPalette1;
private void InitializeChart()
{
series1 = new Surface(tChart1.Chart);
series1.Add(1, 1.1E1, 1.5);
series1.Add(2, 1.12E2, 1.5);
series1.Add(3, 1.13E3, 1.5);
series1.Add(1, 2.2E1, 1.6);
series1.Add(2, 2.2E2, 1.6);
series1.Add(3, 2.2E3, 1.6);
series1.Add(1, 3.31E1, 1.75);
series1.Add(2, 3.32E2, 1.75);
series1.Add(3, 3.33E3, 1.75);
series1.Add(1, 4.31E1, 2);
series1.Add(2, 4.32E2, 2);
series1.Add(3, 4.33E3, 2);
series1.IrregularGrid = true;
series1.ValueFormat = "0.00#E 00";
legendPalette1 = new Steema.TeeChart.Tools.LegendPalette(tChart1.Chart);
legendPalette1.Series = series1;
tChart1.Axes.Left.Logarithmic = true;
tChart1.Axes.Left.Labels.ValueFormat = "0.00#E 00";
legendPalette1.Pen.Visible = false;
legendPalette1.Transparent = true;
tChart1.Draw();
legendPalette1.Left = (int)tChart1.Axes.Bottom.IEndPos 20;
tChart1.Panel.MarginRight = 25;
tChart1.Legend.Visible = false;
}
Can you tell us if previous code help you to achieve as you want? If it doesn't help you, please explain us, step to step, what you want achieve because we try to make a simple example, if it is possible.
Thanks,
Re: Logarithmic scaling using Legend Palette?
Posted: Tue Feb 21, 2012 1:56 am
by 15661487
Hi Sandra,
Unfortunately that example does not really help me. I will try and explain with more detail. I am drawing a color grid with the x and y axes being linear, and color representing a 3rd dimension. I have applied my own palette using the AddPalette() and ClearPalette() methods, and the color grid itself works quite well.
I want to add a legend palette to this to show the values that correspond with the different colours. By default the left and right axes on the legend palette have a linear scale. I want to change this to a logarithmic scale, so that the smaller values are emphasised.
When I look at the legend palette's properties in the designer, there is an Axes tab. If I select the Left Axis and the Scales tab inside the Axes tab, there is a Logarithmic check box. I had hoped that if I checked this box then I would get a logarithmic scale on the legend palette, however this does not seem to work. I'm not sure if it is meant to work or not, but it would be useful if it did.
Let me know if I need to clarify my issue any further.
Michael
Re: Logarithmic scaling using Legend Palette?
Posted: Tue Feb 21, 2012 4:54 pm
by 10050769
Hello Michael,
Thanks for your information. I have added the problem in the bug list report with number[TF02016049]. We will try to fix it for next maintenance releases of TeeChart.Net.
Thanks,
Re: Logarithmic scaling using Legend Palette?
Posted: Fri Jul 27, 2012 5:57 am
by 15661487
I see that someone has attempted to fix this problem (ie TF02016049), however I am yet to get it to work. To turn on logarithmic scaling on the legend palette I have attempted to do it both via the editor at design time, and run time, and programmatically.
Editor at run time - I can successfully check the logarithmic checkbox of a programmatically created LegendPalette and change the scale correctly. sbar.png (attached) is an example of what I'm trying to achieve.
Editor at design time - I can create the LegendPalette tool in the editor and configure it, but when it comes to saving the form after editing, I received the error:
'Type 'System.ComponentModel.Component' in Assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b7a5c561934e089' is not marked as serializable.'
The only way to prevent that error is to delete the tool.
Programmatically - I could not find a programmatic way of accessing the LegendPalette axis controls.
Hope it can be sorted out sometime, thanks,
Michael
Re: Logarithmic scaling using Legend Palette?
Posted: Fri Jul 27, 2012 8:37 am
by narcis
Hi Michael,
Editor at design time - I can create the LegendPalette tool in the editor and configure it, but when it comes to saving the form after editing, I received the error:
'Type 'System.ComponentModel.Component' in Assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b7a5c561934e089' is not marked as serializable.'
I could reproduce the issue here and added it (TF02016280) to the bug list to be fixed.
Programmatically - I could not find a programmatic way of accessing the LegendPalette axis controls.
I think you should be able to use something like:
Code: Select all
legendPalette1.GetVertAxis.AxisPen.Color = Color.Red;
but it doesn't work either so I have added this issue (TF02016281) to the list too.
Re: Logarithmic scaling using Legend Palette?
Posted: Mon Jul 30, 2012 12:02 am
by 15661487
Hi Narcis,
As I understand it, GetVertAxis returns the chart vertical axis, as opposed to the LegendPalette vertical axis. If I'm correct, it needs another way to access the LegendPalette axes. If you are correct, then the documentation is a little misleading.
Regards,
Michael
Re: Logarithmic scaling using Legend Palette?
Posted: Mon Jul 30, 2012 6:59 am
by narcis
Hi Michael,
As you may have seen in the chart editor already, LegendPalette tool is a chart itself. That's why I'd expect GetVertAxis to work also. Anyway, TF02016281 asks for a way to be able to access the axes programmatically.