Page 1 of 1
Polar Series
Posted: Thu Apr 12, 2012 3:11 pm
by 16562168
Hi,
I have to admit that I'm totally confused as to how this PolarSeries works now. I drop a TPolarSeries in to a Chart. and add the following code.
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Series1->GetVertAxis->Automatic = 1;
Series1->GetHorizAxis->Automatic = 1;
Series1->Circled = 1;
for(int i = 0; i < 360; i+=5)
Series1->AddPolar(i, 10, "", clRed);
}
I should see a circle of radius 10. But what I see is a dot. When I start panning, I see a ellipse with label 10 changing shape, and label 10s on top and bottom axis moving.
How do I set the minimum, maximum, labels on Radius circle as well as label on angles? What does panning mean anyway in a polar chart? How do I zoom in and out?
Thanks
-Bill
Re: Polar Series
Posted: Mon Apr 16, 2012 10:21 am
by yeray
Hi Bill,
Note the axes, when automatic, are scaled to fit the series values. In your example, where all the values are equal, the axes show an special behaviour, with both minimum and maximum to 10.
Try setting the axes minimum and maximum manually:
Code: Select all
Series1->GetVertAxis->SetMinMax(0,20);
Series1->GetHorizAxis->SetMinMax(0,20);
Bill wrote:How do I set the minimum, maximum, labels on Radius circle as well as label on angles? What does panning mean anyway in a polar chart? How do I zoom in and out?
Both panning and zooming work as with the other series. They just change the axes scale (minimum and maximum). However, since this series axes are a little bit particular, these features may feel strange.
Re: Polar Series
Posted: Tue Apr 17, 2012 1:32 pm
by 16562168
Series1->GetHorizAxis->SetMinMax(0,20);
GetHorizAxis returns Angle axis. This means sets the Angle axis to display 0 to 20 degree?
Shouldn't the action of panning be moving the whole chart along with mouse? What I see is that the circle is being re-scaled. The same goes with zooming. When I zoom in to a series, the series disappears!
would you please provide an example where it shows that zooming zooms in to a series and panning does move the series.
I must have some parameters set incorrectly because I just can not get the zooming and panning working properly.
Thanks
-Bill
Re: Polar Series
Posted: Thu Apr 19, 2012 8:19 am
by yeray
Hi Bill,
Bill wrote:GetHorizAxis returns Angle axis. This means sets the Angle axis to display 0 to 20 degree?
Where did you read "GetHorizAxis returns Angle axis"? The Polar series is drawn as a circle/ellipse using the
Polar coordinate system.
Bill wrote:Shouldn't the action of panning be moving the whole chart along with mouse? What I see is that the circle is being re-scaled. The same goes with zooming. When I zoom in to a series, the series disappears!
would you please provide an example where it shows that zooming zooms in to a series and panning does move the series.
I must have some parameters set incorrectly because I just can not get the zooming and panning working properly.
I think you are looking for the move and zoom functionalities the commander offers, not the axes zoom and scroll. Could you please give it a try?
Re: Polar Series
Posted: Thu Apr 19, 2012 1:41 pm
by 16562168
Where did you read "GetHorizAxis returns Angle axis"?
TeePolar.pas Line 1110.
{ The BottomAxis is used in Angle axis }
Function TCustomPolarSeries.GetAngleIncrement:Double;
.
.
.
result:=GetHorizAxis.Increment;
Re: Polar Series
Posted: Thu Apr 19, 2012 2:24 pm
by 16562168
I guess my confusion comes from the fact that when you set/get AngleIncrement, GetHorizAxis is used. I'd assume that GetHorizAxis is associated with Angle Axis. And Yet, to set Radius scale, both
Series1->GetHorizAxis->SetMinMax(min, Max);
Series1->GetVertAxis->SetMinMax(min, Max);
have to be used (which I didn't realize before and that caused some confusion as well), which is strange to me because, as your link indicated, a polar coordinate system is defined by Radius and Angle, so when I set Radius MinMax, I should only need to set the values of one Axis.
The second issue is regarding Zoom/Panning. Yes, commander can be used to zoom/Panning of a TPolarSeries, but it only works when the Chart is in 3D! That would've been fine if the 3D% View could be set to 0%, which is not possible, and the effect of the 3D% View not being 0% is that if two identical PolarSeries are plotted, the graph shows a slight offset of the two series from each other, and that is very annoying! My point is that there is no way to Zoom/Panning of a 2D Polar series.
Re: Polar Series
Posted: Fri Apr 20, 2012 2:35 pm
by yeray
Hi Bill,
Bill wrote:Yeray wrote:Where did you read "GetHorizAxis returns Angle axis"?
TeePolar.pas Line 1110.
{ The BottomAxis is used in Angle axis }
Function TCustomPolarSeries.GetAngleIncrement:Double;
.
.
.
result:=GetHorizAxis.Increment;
Right. Note the circular series are quite particular. The Polar series (and radar, etc) uses the Bottom axis (GetHorizAxis) to store some properties (like the Increment, Grid) used to draw the "angle grid lines", the lines that start in the center of the circle. And it uses the Left axis (GetVertAxis) to store some properties used to draw the "concentric grid lines".
Bill wrote:I guess my confusion comes from the fact that when you set/get AngleIncrement, GetHorizAxis is used. I'd assume that GetHorizAxis is associated with Angle Axis. And Yet, to set Radius scale, both
Series1->GetHorizAxis->SetMinMax(min, Max);
Series1->GetVertAxis->SetMinMax(min, Max);
have to be used (which I didn't realize before and that caused some confusion as well), which is strange to me because, as your link indicated, a polar coordinate system is defined by Radius and Angle, so when I set Radius MinMax, I should only need to set the values of one Axis.
As mentioned above, some properties are taken from the Bottom/Left axes to draw the grids. But some other properties from the same axes are taken to draw the + cross in the center, where the labels are actually drawn.
Bill wrote:The second issue is regarding Zoom/Panning. Yes, commander can be used to zoom/Panning of a TPolarSeries, but it only works when the Chart is in 3D! That would've been fine if the 3D% View could be set to 0%, which is not possible, and the effect of the 3D% View not being 0% is that if two identical PolarSeries are plotted, the graph shows a slight offset of the two series from each other, and that is very annoying! My point is that there is no way to Zoom/Panning of a 2D Polar series.
If I use the following code to have two identical TPolarSeries, I can Zoom and Move through the commander and it seems to work fine. Doesn't it for you?
Code: Select all
procedure TForm1.FormCreate(Sender: TObject);
begin
Chart1.View3D:=true;
Chart1.Chart3DPercent:=1;
Chart1.AddSeries(TPolarSeries).FillSampleValues;
Chart1.AddSeries(TPolarSeries).DataSource:=Chart1[0];
end;
Re: Polar Series
Posted: Tue Apr 24, 2012 1:26 pm
by 16562168
Not knowing Delphi, I assume Chart1.AddSeries(TPolarSeries).DataSource:=Chart1[0] is equivalent
Chart1->AddSeries(New TPolarSeries(Chart1))->DataSource = Chart1->Series[0];
This gives the same 1% offset in my test case. I assume with Chart1.Chart3DPercent:=1; All series will show an 1% offset from each other because each plot is 1% off from the previous one, so the issue still remains.
Re: Polar Series
Posted: Fri Apr 27, 2012 7:57 am
by yeray
Hi Bill,
Excuse me, I'm afraid I forgot a pair of settings:
Code: Select all
uses TeePolar;
procedure TForm1.FormCreate(Sender: TObject);
begin
Chart1.View3D:=true;
Chart1.Chart3DPercent:=1;
Chart1.Aspect.Orthogonal:=false;
Chart1.Aspect.Elevation:=360;
Chart1.Aspect.Rotation:=360;
Chart1.AddSeries(TPolarSeries).FillSampleValues;
Chart1.AddSeries(TPolarSeries).DataSource:=Chart1[0];
end;