Chart drawing points outside start and end position
Chart drawing points outside start and end position
I've run into a problem with the chart. With the horizontal axis start and end position set to 0 and 100, the chart is drawing the first and last values on top of the vertical axes so they are not visible.
I tried to work around this by setting the bottom axis start position to 5 and the end position to 95. This resulted in the chart displaying values for the previous and next page.
This problem is reproducible by adding a chart to a form, adding a fastline series to it, and adding the following code to form load:
tChart1.Axes.Bottom.Automatic = false;
tChart1.Axes.Bottom.Minimum = 10;
tChart1.Axes.Bottom.Maximum = 90;
tChart1.Axes.Bottom.StartPosition = 25;
tChart1.Axes.Bottom.EndPosition = 75;
for (int index = 0; index < 100; index++)
fastLine1.Add(index, index);
It seems to me that the chart should only display values with index 10 to 90 but it is displaying all 100 values.
Any help would be appreciated.
I tried to work around this by setting the bottom axis start position to 5 and the end position to 95. This resulted in the chart displaying values for the previous and next page.
This problem is reproducible by adding a chart to a form, adding a fastline series to it, and adding the following code to form load:
tChart1.Axes.Bottom.Automatic = false;
tChart1.Axes.Bottom.Minimum = 10;
tChart1.Axes.Bottom.Maximum = 90;
tChart1.Axes.Bottom.StartPosition = 25;
tChart1.Axes.Bottom.EndPosition = 75;
for (int index = 0; index < 100; index++)
fastLine1.Add(index, index);
It seems to me that the chart should only display values with index 10 to 90 but it is displaying all 100 values.
Any help would be appreciated.
Hello,
to clip the points into the ChartRect area you have to use the ClipPoints property.
If you have assigned a setminmax for an axis and want to clip the points inside the minimum and maximum axis you will have to use the ClipSeries Tool.
to clip the points into the ChartRect area you have to use the ClipPoints property.
If you have assigned a setminmax for an axis and want to clip the points inside the minimum and maximum axis you will have to use the ClipSeries Tool.
Pep Jorge
http://support.steema.com
http://support.steema.com
Hi,
It looks like I would have to add a ClipSeries tool for each series. This will add complexity and reduce the performance of the charting app.
Isn't the horizontal axis minumum and maximum supposed to control the range of series data that is displayed on the chart?
I'm scaling the vertical axes according to the range of data that should be displayed on the chart. Occasionally, the chart displays values outside that range which go off the vertical scale.
Don't you think it is a bug for the chart to display values outside the axis minimum and maximum?
Regards,
LT411
It looks like I would have to add a ClipSeries tool for each series. This will add complexity and reduce the performance of the charting app.
Isn't the horizontal axis minumum and maximum supposed to control the range of series data that is displayed on the chart?
I'm scaling the vertical axes according to the range of data that should be displayed on the chart. Occasionally, the chart displays values outside that range which go off the vertical scale.
Don't you think it is a bug for the chart to display values outside the axis minimum and maximum?
Regards,
LT411
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Hi LT411,
No, we don't think it is a bug. Manually setting axes scales the chart will display data range indicated. However, if you zoom or scroll the chart data within new axes range will be displayed.
BTW: You may be interested in using this:
No, we don't think it is a bug. Manually setting axes scales the chart will display data range indicated. However, if you zoom or scroll the chart data within new axes range will be displayed.
BTW: You may be interested in using this:
Code: Select all
tChart1.Aspect.ClipPoints = true;
Best Regards,
Narcís Calvet / 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 |
Hello,
The first problem I encountered is the chart displays values on top of the axis which makes them hard to see. The second problem I encountered is the chart occasionally displays series points outside the range defined by the horizontal axis minimum and maximum. I tried to solve the first problem by setting the horizontal axis start and end positions to 1 and 99 but that made the second problem more pronounced. I submitted sample code to reproduce this in the original post.
I tried ClipSeries as suggested.
ClipSeries clipSeries = new ClipSeries(tChart.Chart);
clipSeries.Series = volume;
clipSeries.Active = true;
This solved the first two problems but introduced a third. Adding ClipSeries to the volume series causes the candle series to not be displayed.
I'll try tChart1.Aspect.ClipPoints next.
Regards,
LT411
The first problem I encountered is the chart displays values on top of the axis which makes them hard to see. The second problem I encountered is the chart occasionally displays series points outside the range defined by the horizontal axis minimum and maximum. I tried to solve the first problem by setting the horizontal axis start and end positions to 1 and 99 but that made the second problem more pronounced. I submitted sample code to reproduce this in the original post.
I tried ClipSeries as suggested.
ClipSeries clipSeries = new ClipSeries(tChart.Chart);
clipSeries.Series = volume;
clipSeries.Active = true;
This solved the first two problems but introduced a third. Adding ClipSeries to the volume series causes the candle series to not be displayed.
I'll try tChart1.Aspect.ClipPoints next.
Regards,
LT411
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Hi LT411,
Thanks in advance.
Code below works fine for me here using latest TeeChart for .NET v3 build available at the client area. Which is the version you are using? If the problem persists could you please modify the code snippet below so that we can reproduce the problem here?This solved the first two problems but introduced a third. Adding ClipSeries to the volume series causes the candle series to not be displayed.
Code: Select all
public Form1()
{
InitializeComponent();
InitializeChart();
}
private void InitializeChart()
{
Steema.TeeChart.Styles.Candle candle1 = new Steema.TeeChart.Styles.Candle(tChart1.Chart);
Steema.TeeChart.Styles.Volume volume1 = new Steema.TeeChart.Styles.Volume(tChart1.Chart);
tChart1.Axes.Bottom.Automatic = false;
tChart1.Axes.Bottom.Minimum = 10;
tChart1.Axes.Bottom.Maximum = 90;
tChart1.Axes.Bottom.StartPosition = 25;
tChart1.Axes.Bottom.EndPosition = 75;
for (int index = 0; index < 100; index++)
{
candle1.Add(index, 90, 100, 0, 10);
volume1.Add(index, index);
}
Steema.TeeChart.Tools.ClipSeries clipVolume1= new Steema.TeeChart.Tools.ClipSeries(tChart1.Chart);
clipVolume1.Series = volume1;
}
Best Regards,
Narcís Calvet / 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 |
Hello Narcis,
Thanks for the quick reply. I was able to reproduce this problem with the code below. The key to making it fail is adding the candle series after the volume series. If I create the candle series first, it works fine. Our app lets the user add and delete series at will, so I can't create them all up front though.
private void Form1_Load(object sender, EventArgs e)
{
tChart1.Axes.Bottom.Automatic = false;
tChart1.Axes.Bottom.Minimum = 10;
tChart1.Axes.Bottom.Maximum = 90;
tChart1.Axes.Bottom.StartPosition = 25;
tChart1.Axes.Bottom.EndPosition = 75;
tChart1.Axes.Left.EndPosition = 50;
Axis volumeLeft = new Axis(false, false, tChart1.Chart);
volumeLeft.StartPosition = 55;
tChart1.Axes.Custom.Add(volumeLeft);
Volume volume = new Volume(tChart1.Chart);
volume.VertAxis = VerticalAxis.Custom;
volume.CustomVertAxis = volumeLeft;
ClipSeries clipSeries = new ClipSeries(tChart1.Chart);
clipSeries.Active = true;
clipSeries.Series = volume;
Candle candle = new Candle(tChart1.Chart);
for (int index = 0; index < 100; index++)
{
candle.Add(index, index - 5, index + 10, index - 10, index + 5);
volume.Add(index, index * 100);
}
}
Thanks for the quick reply. I was able to reproduce this problem with the code below. The key to making it fail is adding the candle series after the volume series. If I create the candle series first, it works fine. Our app lets the user add and delete series at will, so I can't create them all up front though.
private void Form1_Load(object sender, EventArgs e)
{
tChart1.Axes.Bottom.Automatic = false;
tChart1.Axes.Bottom.Minimum = 10;
tChart1.Axes.Bottom.Maximum = 90;
tChart1.Axes.Bottom.StartPosition = 25;
tChart1.Axes.Bottom.EndPosition = 75;
tChart1.Axes.Left.EndPosition = 50;
Axis volumeLeft = new Axis(false, false, tChart1.Chart);
volumeLeft.StartPosition = 55;
tChart1.Axes.Custom.Add(volumeLeft);
Volume volume = new Volume(tChart1.Chart);
volume.VertAxis = VerticalAxis.Custom;
volume.CustomVertAxis = volumeLeft;
ClipSeries clipSeries = new ClipSeries(tChart1.Chart);
clipSeries.Active = true;
clipSeries.Series = volume;
Candle candle = new Candle(tChart1.Chart);
for (int index = 0; index < 100; index++)
{
candle.Add(index, index - 5, index + 10, index - 10, index + 5);
volume.Add(index, index * 100);
}
}
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Hi LT411,
Ok, now I see the problem. This happens when using different axes for the series and is quite logical because ClipSeries tool clips area bounded by series vertical and horizontal axis.
In that case, the only solution I can think of is using SubChart tool for separating different chart regions so that you'll have independent charts which won't interfere with each other.
Ok, now I see the problem. This happens when using different axes for the series and is quite logical because ClipSeries tool clips area bounded by series vertical and horizontal axis.
In that case, the only solution I can think of is using SubChart tool for separating different chart regions so that you'll have independent charts which won't interfere with each other.
Best Regards,
Narcís Calvet / 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 |
I believe sub-charts are really just independent charts.
Wouldn't I lose things like the common horizontal axis?
I think that would force me to coordinate the sub-charts for all of the tools and behaviors such as scrolling, zooming, paging, cursors, etc.
Thanks for your help. I understand the limitations now and will need to figure something out.
Wouldn't I lose things like the common horizontal axis?
I think that would force me to coordinate the sub-charts for all of the tools and behaviors such as scrolling, zooming, paging, cursors, etc.
Thanks for your help. I understand the limitations now and will need to figure something out.
Hello,
One of the programmers here solved the problem with this:
void volume_AfterDrawValues(object sender, Steema.TeeChart.Drawing.Graphics3D g)
{
tChart1.Graphics3D.ClearClipRegions();
}
Now it works without having to create sub-charts.
Could you have one of your programmers update the ClipSeries code to clear the clip regions so we don't have to?
One of the programmers here solved the problem with this:
void volume_AfterDrawValues(object sender, Steema.TeeChart.Drawing.Graphics3D g)
{
tChart1.Graphics3D.ClearClipRegions();
}
Now it works without having to create sub-charts.
Could you have one of your programmers update the ClipSeries code to clear the clip regions so we don't have to?
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Hi LT411,
Ok, in that case you may want to use events arguments like this:One of the programmers here solved the problem with this:
void volume_AfterDrawValues(object sender, Steema.TeeChart.Drawing.Graphics3D g)
{
tChart1.Graphics3D.ClearClipRegions();
}
Now it works without having to create sub-charts.
Code: Select all
void volume_AfterDrawValues(object sender, Steema.TeeChart.Drawing.Graphics3D g)
{
g.ClearClipRegions();
}
I'm not sure if this would be coherent with the design of ClipSeries tool. However, I've added your request to the wish-list to be investigated.Could you have one of your programmers update the ClipSeries code to clear the clip regions so we don't have to?
Best Regards,
Narcís Calvet / 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 |