I have an Org capture template that tracks weight. It is a sub-capture under "health". The relevant snippet for the capture template is:
("h" "Health")
("hW" "Weight"
table-line (id "ID-TBL-WEIGHT") "|%?|%u|" :unnarrowed t)
And then I have a table that collects the data:
:PROPERTIES:
:ID: ID-TBL-WEIGHT
:END:
#+NAME: weights
| Weight (lbs) | Date | Note | Offset |
|--------------+------------------+--------------------------+--------|
| 142 | [2013-03-25 Mon] | | |
| 144 | [2020-06-06 Sat] | | |
The idea being it is easy to log weight on any given date, take notes (e.g. "pre/post some travel, sickness, exercise, diet, etc.") and even offsets if you switch scales and need to adjust for something.
Elsewhere, graph it with Org babel blocks. I use jupyter-python
but Gnuplot or the built-in Org graphing should all work roughly the same. In all cases, in the #+BEGIN_SRC
header you'll want to have :var w=weights
(from the #+NAME: wegihts
line).