Dynamically showing/hiding axis labels
-
- Newbie
- Posts: 64
- Joined: Fri Jun 16, 2006 12:00 am
Dynamically showing/hiding axis labels
Hello,
I have a plot where I need to display or hide the labels of the left axis depending on whether the plot height (in pixels) is big enough.
I've tried setting it up during the original plot setup but the size of the plot area is not known at that point.
I've also tried to use BeforeDrawAxes and BeforeDrawSeries events - the problem is that setting Axis.Labels.Visible in the event handlers doesn't update the axis properly.
Best,
Michal
I have a plot where I need to display or hide the labels of the left axis depending on whether the plot height (in pixels) is big enough.
I've tried setting it up during the original plot setup but the size of the plot area is not known at that point.
I've also tried to use BeforeDrawAxes and BeforeDrawSeries events - the problem is that setting Axis.Labels.Visible in the event handlers doesn't update the axis properly.
Best,
Michal
Best,
Michal Blazejczyk
Lead Programmer
Genome Quebec
Michal Blazejczyk
Lead Programmer
Genome Quebec
Re: Dynamically showing/hiding axis labels
Hello Michal Blazejczyk,
I hope will helps.
Thanks,
I think that you need to paint axes before calculate either value, so you can get values of you want. Please check if using tChart1.Draw(), tChart1.refresh, tChart1.Invalidate() or Bitmap bitmap1= tChart1.Bitmap, your application works fine. If it doesn't the problem, please you could send us a simple example, because we can reproduce issue here.I've tried setting it up during the original plot setup but the size of the plot area is not known at that point.
I've also tried to use BeforeDrawAxes and BeforeDrawSeries events - the problem is that setting Axis.Labels.Visible in the event handlers doesn't update the axis properly.
I hope will helps.
Thanks,
Best Regards,
Sandra Pazos / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |
-
- Newbie
- Posts: 64
- Joined: Fri Jun 16, 2006 12:00 am
Re: Dynamically showing/hiding axis labels
Hi Sandra,
I started to create a test project, but in fact, I think it will be easier if we turned this question around.
Could you create a small project for me with a single data series (say, of type Points). And I would like that if the plot area (but NOT the entire chart window - only the area between axes) becomes less high than 50 pixels, the labels on the Y axis disappear.
Could you try and do it for me?
Best,
Michal
I started to create a test project, but in fact, I think it will be easier if we turned this question around.
Could you create a small project for me with a single data series (say, of type Points). And I would like that if the plot area (but NOT the entire chart window - only the area between axes) becomes less high than 50 pixels, the labels on the Y axis disappear.
Could you try and do it for me?
Best,
Michal
Best,
Michal Blazejczyk
Lead Programmer
Genome Quebec
Michal Blazejczyk
Lead Programmer
Genome Quebec
Re: Dynamically showing/hiding axis labels
Hello Michal,
I couldn't reproduce your problem using last version of TeeChart . Net and next code:
Please, check that previous code works fine in your application resizing chart to obtain an image as next:
Although this image is very small, labels appear. Specifically in this case only a label appears that is marked with a red rectangle, but it doesn't disappear. If your code doesn’t work correctly, please you could say what version of TeeChart .Net are you using?
I hope will helps.
Thanks,
I couldn't reproduce your problem using last version of TeeChart . Net and next code:
Code: Select all
public Form1()
{
InitializeComponent();
InitializeChart();
}
private Steema.TeeChart.Styles.Points points1;
private void InitializeChart()
{
tChart1.Dock = DockStyle.Fill;
points1 = new Steema.TeeChart.Styles.Points(tChart1.Chart);
points1.FillSampleValues(10);
tChart1.Draw();
}
Although this image is very small, labels appear. Specifically in this case only a label appears that is marked with a red rectangle, but it doesn't disappear. If your code doesn’t work correctly, please you could say what version of TeeChart .Net are you using?
I hope will helps.
Thanks,
Best Regards,
Sandra Pazos / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |
-
- Newbie
- Posts: 64
- Joined: Fri Jun 16, 2006 12:00 am
Re: Dynamically showing/hiding axis labels
Hi Sandra,
I'm afraid you are misunderstanding me. This post is not related to my other post ("Detecting too small plot area?").
The issue raised in this post is the following: I would like that Y axis labels disappear completely once the plot area becomes smaller than, say, 50 pixels in height.
I need to write custom code to handle this case. I have tried a few approaches, but the axis don't refresh properly.
So, in the example you have given, I would like the "0" label (or any other labels) on the Y axis not to be there at all if the plot area is small. But when the plot area gets bigger, I would like the labels to appear again.
I was hoping you could show me how I can implement this.
Best,
Michal
I'm afraid you are misunderstanding me. This post is not related to my other post ("Detecting too small plot area?").
The issue raised in this post is the following: I would like that Y axis labels disappear completely once the plot area becomes smaller than, say, 50 pixels in height.
I need to write custom code to handle this case. I have tried a few approaches, but the axis don't refresh properly.
So, in the example you have given, I would like the "0" label (or any other labels) on the Y axis not to be there at all if the plot area is small. But when the plot area gets bigger, I would like the labels to appear again.
I was hoping you could show me how I can implement this.
Best,
Michal
Best,
Michal Blazejczyk
Lead Programmer
Genome Quebec
Michal Blazejczyk
Lead Programmer
Genome Quebec
Re: Dynamically showing/hiding axis labels
Hello Michal,
Thanks, for your information. I made a simple project that I think you could use for your application, see next code:
As you can see in previous code, you need AfterDraw Event, and tChart1.Draw() property, because chart is updated, and labels appears and disappears.
I hope will helps.
Thanks,
Thanks, for your information. I made a simple project that I think you could use for your application, see next code:
Code: Select all
public Form1()
{
InitializeComponent();
InitializeChart();
}
private Steema.TeeChart.Styles.Points points1;
private void InitializeChart()
{
tChart1.Dock = DockStyle.Fill;
tChart1.Aspect.View3D = false;
points1 = new Steema.TeeChart.Styles.Points(tChart1.Chart);
points1.FillSampleValues(10);
tChart1.AfterDraw += new Steema.TeeChart.PaintChartEventHandler(tChart1_AfterDraw);
tChart1.Draw();
}
void tChart1_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
{
Rectangle rect = new Rectangle();
rect = tChart1.Chart.ChartRect;
if (rect.Height <=50)
{
tChart1.Axes.Left.Labels.Visible = false;
}
else
{
tChart1.Axes.Left.Labels.Visible = true;
}
}
I hope will helps.
Thanks,
Best Regards,
Sandra Pazos / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |
-
- Newbie
- Posts: 64
- Joined: Fri Jun 16, 2006 12:00 am
Re: Dynamically showing/hiding axis labels
Hi Sandra,
I think the problem is that I'm using Axis.Labels.Items to provide custom axis labels.
In my version of TeeChart, when the plot area gets too small, the axis labels are simply drawn to the right of the axis.
Best,
Michal
I think the problem is that I'm using Axis.Labels.Items to provide custom axis labels.
Code: Select all
private void InitializeChart()
{
Points points = new Steema.TeeChart.Styles.Points( _chart.Chart );
points.Add( new int[] { 1, 5, 10, 15, 20 }, new int[] { 1, 5, 10, 15, 20 } );
ArrayList rowNames = new ArrayList( 20 );
for( int i = 1; i <= 20; i++ )
{
rowNames.Add( "Row " + i.ToString() );
}
Steema.TeeChart.AxisLabelsItems rowLabels = _chart.Axes.Left.Labels.Items;
rowLabels.Clear();
for( int i = 0; i < rowNames.Count; ++i )
{
rowLabels.Add( i, rowNames[ i ].ToString() );
}
}
Best,
Michal
Best,
Michal Blazejczyk
Lead Programmer
Genome Quebec
Michal Blazejczyk
Lead Programmer
Genome Quebec
Re: Dynamically showing/hiding axis labels
Hello Michal,
I couldn't reproduce your problem here using your code. I made a modifile in last code I sent you:
Please check previous code works fine in your application. If this not works fine, please you could say what version is of are you using at the moment?
Thanks,
I couldn't reproduce your problem here using your code. I made a modifile in last code I sent you:
Code: Select all
public Form1()
{
InitializeComponent();
InitializeChart();
}
private Steema.TeeChart.Styles.Points points;
private System.Collections.ArrayList rowNames;
private void InitializeChart()
{
tChart1.Dock = DockStyle.Fill;
points = new Steema.TeeChart.Styles.Points(tChart1.Chart);
points.Add(new int[] { 1, 5, 10, 15, 20 }, new int[] { 1, 5, 10, 15, 20 });
rowNames = new System.Collections.ArrayList(20);
AddCustomLabels();
tChart1.Resize += new EventHandler(tChart1_Resize);
tChart1.Draw();
}
private void AddCustomLabels()
{
for (int i = 1; i <= 20; i++)
{
rowNames.Add("Row " + i.ToString());
}
Steema.TeeChart.AxisLabelsItems rowLabels = tChart1.Axes.Left.Labels.Items;
rowLabels.Clear();
for (int i = 0; i < rowNames.Count; ++i)
{
rowLabels.Add(i, rowNames[i].ToString());
}
}
void tChart1_Resize(object sender, EventArgs e)
{
tChart1.Draw();
Rectangle rect = new Rectangle();
rect = tChart1.Chart.ChartRect;
if (rect.Height <= 50)
{
Steema.TeeChart.AxisLabelsItems rowLabels = tChart1.Axes.Left.Labels.Items;
rowLabels.Clear();
tChart1.Axes.Left.Labels.Visible = false;
}
else
{
tChart1.Axes.Left.Labels.Visible = true;
AddCustomLabels();
}
}
Please check previous code works fine in your application. If this not works fine, please you could say what version is of are you using at the moment?
Thanks,
Best Regards,
Sandra Pazos / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |
-
- Newbie
- Posts: 64
- Joined: Fri Jun 16, 2006 12:00 am
Re: Dynamically showing/hiding axis labels
Hi Sandra,
Thank you, it works well inside the Resize() event and with removing of all labels prior to hiding them.
Best,
Michal
Thank you, it works well inside the Resize() event and with removing of all labels prior to hiding them.
Best,
Michal
Best,
Michal Blazejczyk
Lead Programmer
Genome Quebec
Michal Blazejczyk
Lead Programmer
Genome Quebec