Way to annotate milestones on a graph?

Is there a way to mark specific events on a Beeminder graph?

For example, I have a graph that tracks my weight. I’ve recently started walking briskly for an hour a day. I’d like to be able to mark my weight graph with a star/dot/square/… that, when I hover over it, says “started daily 1-hour brisk walks today”. That would help me track how different lifestyle changes affect my weight.

Obviously I can include this information when I record the data point for the day in question, but those comments aren’t readily visible the way an annotation on the graph would be.


What we need is a #UVI that makes for graphs that look like this annotated thousand UVI graph…

Interesting pseudo-promise in the footnote:

We don’t yet have annotations like that. Those were added in post-production. But we’ll surely have them within 1000 days/UVIs from now!

One month to go! :slight_smile:


I love this idea, a lot. I might use it mainly to annotate where I changed the road, but that would be very useful.


This is done! You can now add hashtags in your datapoint comments and they show up on the graph. Thanks to @philip for noticing that we pseudo-promised this by UVI#2000. It’s now delivered as UVI#2787:


And thanks to @grayson for suggesting it!


#this #changes #everything

1 Like

Sometimes it works sometimes it doesn’t
See https://www.beeminder.com/apolyton/7minworkout#data (hashtag on 26/9)

Seems like you don’t like hashtags with a capital first letter! #Running doesn’t work , #running works


Doesn’t like a leading number either, so my #17k run needs a leading alphabetic character.

Curious as to why line 666 (:hear_no_evil:) of beebrain’s blib matches #[a-z]\w+ instead of just #\w+

Here’s my lackadaisical half-marathon training graph.

1 Like

Word of the day for me :wink: thank you!

1 Like

Thanks for the feedback on this!

  1. I fixed the case-sensitivity
  2. I don’t think leading numbers should be ok
  3. I think a hashtag should have to be more than 1 character

Partly I’m trying to cut down on spurious hashtag interpretation when someone just has a comment like “go me! I’m #1!” or something.

Here’s the regex I’m using now:

re.findall(r'(?:^|\s)(#[a-zA-Z]\w+)(?=$|\s)', datapoint_comment)

Let me know if you find new ways to break it!

UPDATE: There was one way it was broken, now fixed. Original regex:
That last colon should’ve been an equal sign, duh. Lookahead assertion to not consume the post-hashtag whitespace. More than you wanted to know! (Now I’m wondering if it would be cleaner to split on whitespace and filter for valid hashtags…)

1 Like

I think some people might actually want to have #1 , #2 etc annotations to point to a bigger description

I guess so, but, at least until the layout is prettier, I’m erring on the side of only showing clearly intentional hashtags. So whitespace-separated, more than one character, and would work as a variable name in C-like programming languages.

1 Like

Ah - this explains the mess I found this morning because some of my IFTTT applets for ToDoist integration default to putting #todoist on every data point! Need to clean those up.

1 Like

Eek, sorry about that! Got a link to the graph so I can see how bad it is?

Workaround idea: zoom the graph in with the x-min (aka t-min) setting so there’s less to clean up.

This is really cool!


I have a legacy of thousands of data entries with a leading hashtag (use it in Complice to identify beeminder-relevant units e.g. ‘Write code #wu 2’ where the ‘#wu’ denotes ‘work unit’ and the number after is a quantifier for this variable, similar to the #todoist example). Now, most of my graphs look completely over-crowded with text. Is there a way to either auto-clean past data or to turn this off?


I’m also getting a real messy graph:

I’d appreciate one or more of the following:
• Auto-clean past data
• Choose which symbol acts as the hashtag per goal
• Turn off setting per goal


Fortunately I’m a very recent Bee user, so cleaning up my hashtagged data manually wasn’t a problem once I edited my IFTTT applets.


Sorry for the hideousness there! We just added a setting to turn it off!

Also, for cases where there are many datapoints on the same day all with the same hashtag (some IFTTT recipes, for example, may do that) we now uniquify the set of tags.


I think part of the issue here is that the hashtags are there for different reasons. I have at least one messy goal aka the one above where it makes sense to turn off. The point with my hashtags is not to tag specific, larger events, but to rather simplify a future, potential data summary. When training, I tag with the type of training (endurance, strength, whatever), when playing games I tag with platform, etc. Stuff that are different between the datapoints, but where making different goals doesn’t really make sense.

1 Like