Page 1 of 1

Overlapping bars

Posted: Tue Mar 25, 2014 4:04 pm
by 16468661
I have 3 bars per date and the bars overlap. It seems to be by creation order so the older ones are behind the newer ones. How do I eliminate this overlapping behavior?

Thanks

Re: Overlapping bars

Posted: Thu Mar 27, 2014 2:16 pm
by yeray
Hello,

Please make sure the three bars have the same XValue.
Here it is a simple example doing something similar to what I understood you are doing, and I see no overlapping bars:

Code: Select all

uses Series, DateUtils;

procedure TForm1.FormCreate(Sender: TObject);
var i, j: Integer;
    tmpDate: TDateTime;
begin
  Chart1.Axes.Bottom.LabelStyle:=talPointValue;

  for i:=0 to 2 do
    with Chart1.AddSeries(TBarSeries) as TBarSeries do
    begin
      XValues.DateTime:=true;

      for j:=0 to 3 do
      begin
        tmpDate:=IncDay(Today, j);
        AddXY(tmpDate, 25+random*75);
      end;
    end;
end;
If you still find problems with it, please arrange a simple example project we can run as-is to reproduce the problem here.

Re: Overlapping bars

Posted: Thu Mar 27, 2014 3:17 pm
by 16468661
Here's the full code-

Code: Select all

procedure TfrmPsrGraph.SetupGraph(const v1,v2,v3:shortstring);
var
  xBar1,xBar2,xBar3:TBarSeries;
  xLine1,xLine2,xLine3:TLineSeries;
  xTrend:TTrendFunction;
  i:integer;
  m, b: Double;
begin
  xTrend:=TTrendFunction.Create(self);

  for i := chtPSR.SeriesCount -1 downto 0 do
     chtPSR.Series[i].Free;

  CalcScrapPercent;

//  chtPSR.Axes.Bottom.LabelStyle:=talPointValue;  //only show dates with data

  xBar3:=TBarSeries.Create(chtPSR);
  xBar3.ParentChart:=chtPSR;
  xBar3.DataSource:=fPSRTable;
  xBar3.YValues.ValueSource:=v3;
  xBar3.XValues.ValueSource:='psrdate';
  xBar3.XValues.DateTime:=true;
  xBar3.ShowInLegend:=false;
  xBar3.Marks.Visible:=false;
  xBar3.color:=clAqua;
  xBar3.RefreshSeries;
  xBar3.Title:='s3 ';
  xBar3.ShowInLegend:=true;

  xBar1:=TBarSeries.Create(chtPSR);
  xBar1.ParentChart:=chtPSR;
  xBar1.DataSource:=fPSRTable;
  xBar1.YValues.ValueSource:=v1;
  xBar1.XValues.ValueSource:='psrdate';
  xBar1.XValues.DateTime:=true;
  xBar1.ShowInLegend:=false;
  xBar1.Marks.Visible:=false;
  xBar1.color:=clRed;
  xBar1.RefreshSeries;
  xBar1.Title:='s1 ';
  xBar1.ShowInLegend:=true;

  xBar2:=TBarSeries.Create(chtPSR);
  xBar2.ParentChart:=chtPSR;
  xBar2.DataSource:=fPSRTable;
  xBar2.YValues.ValueSource:=v2;
  xBar2.XValues.ValueSource:='psrdate';
  xBar2.XValues.DateTime:=true;
  xBar2.ShowInLegend:=false;
  xBar2.Marks.Visible:=false;
  xBar2.color:=clGreen;
  xBar2.RefreshSeries;
  xBar2.Title:='s2 ';
  xBar2.ShowInLegend:=true;

  if pos('scrap',v1)>0 then begin
    MakeTitle('SCRAP: ');
    xBar3.Title:='s3 '+formatfloat('0.00%',fScrap.s3);
    xBar1.Title:='s1 '+formatfloat('0.00%',fScrap.s1);
    xBar2.Title:='s2 '+formatfloat('0.00%',fScrap.s2);
  end
  else MakeTitle('PRODUCTION: ');


  if cb3rd.Checked then AddTrend(xBar3,xLine3);
  if cb1st.Checked then AddTrend(xBar1,xLine1);
  if cb2nd.Checked then AddTrend(xBar2,xLine2);

  chtPSR.BottomAxis.ExactDateTime:=true;
  chtPSR.BottomAxis.DateTimeFormat:='m/d';
  chtPSR.BottomAxis.Increment:= DateTimeStep[dtOneDay];

end;
I will email you a screen shot of the overlapping bars if you want. I dont see how to upload images here.

Re: Overlapping bars

Posted: Fri Mar 28, 2014 4:00 pm
by yeray
Hello,
Numinor wrote:Here's the full code-
This is not the full code. There is a table I don't know (fPSRTable), some unknown variables (v1, v2, v3, fScrap) and some unknown methods (CalcScrapPercent, AddTrend).
Please arrange a simple example project we can run as-is to reproduce the problem here.
See the instructions in my signature.
Numinor wrote:I will email you a screen shot of the overlapping bars if you want. I dont see how to upload images here.
Here you have the instructions to attach a file in phpbb forums. It's quite straightforward. While you are writting a reply or a new message, if you scroll down you'll find the "Upload attachment" tab. You click on the "Browse..." button, you select your file and you click the "Add the file" button.