Recent

Author Topic: [SOLVED] Two series overwriting; labels overwriting points  (Read 371 times)

trev

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1428
  • Former Delphi 1-7, 10.2 user
[SOLVED] Two series overwriting; labels overwriting points
« on: January 21, 2021, 08:31:22 am »
1. My CPU temperature series is overwriting my fan RPM series - is there a way to avoid this?

2. My CPU point labels are overwriting my point triangles - is their a way to avoid this?

See attached chart pic.

(Be gentle - it's the first time I've used TAchart :)
« Last Edit: January 21, 2021, 12:09:27 pm by trev »
Lazarus 2.1 r65061 FPC 3.3.1 r49223 macOS 10.14.6 Xcode 11.3.1
Lazarus 2.1 r65070 FPC 3.3.1 r49223 macOS 11.2.3 aarch64 Xcode 12.4
Lazarus 2.1 r61574 FPC 3.3.1 r42318 FreeBSD 12.1 amd64 VMware VM
Lazarus 2.1 r61574 FPC 3.0.4 Ubuntu 20.04 Parallels VM
Lazarus 2.0.10 FPC 3.2.0 Win10 Parallels VM

wp

  • Hero Member
  • *****
  • Posts: 8367
Re: Two series overwriting; labels overwriting points
« Reply #1 on: January 21, 2021, 10:02:06 am »
To begin with: TAChart has no built-in mechanism to detect overlapping series labels between series. But you have some options to control label positioning:
  • Play with the MarkPositions property of each series. When the values of the first series are consistently displayed higher than the values of the second series you could set the MarkPositions of the first series to lmpPositive which will draw all labels of this series above the data points, and you could set the MarkPositions of the second series to lmpNegative which will draw these labels below the data points. You can also adjust the Marks.Distance for both series which is the distance between label and data point.
  • Use a paned presentation of the data, i.e. show the first series in the upper, and the second series in the lower half of the chart. There are tutorials in the wiki on how to achieve this effect.
  • Do not use chart labels at all. My favorite since it avoids the chart to becomes too crowded. If you absolutely need to know the exact value of a data point you can use a TDataPointHintTool which displays the desired information in a popup window when the mouse is moved over this point.
« Last Edit: January 21, 2021, 10:17:58 am by wp »
Mainly Lazarus trunk / fpc 3.2.0 / all 32-bit on Win-10, but many more...

trev

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1428
  • Former Delphi 1-7, 10.2 user
Re: Two series overwriting; labels overwriting points
« Reply #2 on: January 21, 2021, 12:00:48 pm »
I tried the TDataPointHintTool but every hint is obscured by the cursor pointer, so I went with a paned presentation of the data.

Thanks!
Lazarus 2.1 r65061 FPC 3.3.1 r49223 macOS 10.14.6 Xcode 11.3.1
Lazarus 2.1 r65070 FPC 3.3.1 r49223 macOS 11.2.3 aarch64 Xcode 12.4
Lazarus 2.1 r61574 FPC 3.3.1 r42318 FreeBSD 12.1 amd64 VMware VM
Lazarus 2.1 r61574 FPC 3.0.4 Ubuntu 20.04 Parallels VM
Lazarus 2.0.10 FPC 3.2.0 Win10 Parallels VM

wp

  • Hero Member
  • *****
  • Posts: 8367
Re: Two series overwriting; labels overwriting points
« Reply #3 on: January 21, 2021, 12:06:25 pm »
I tried the TDataPointHintTool but every hint is obscured by the cursor pointer
You can use the OnHintLocation event of the HintTool to move the hint window relative to the cursor.
Mainly Lazarus trunk / fpc 3.2.0 / all 32-bit on Win-10, but many more...

 

TinyPortal © 2005-2018