New visual features on graphs

(In exciting pre-news, Tare tags are technically live, but we’re dealing with some loose ends before we convert people’s graphs.)

Along for the ride with getting tare tags deployed, we decided that all the datapoint magic strings should have visual indicators on the graph. Here’s what we came up with:

#DERAIL

Derailments haven’t changed: it’s a red triangle pointing down (or up, depending on which the good side of the bright red line is) at the point where you derailed.

#TARE

Tare tags display the same as the old odometer zero-resets: a very faint vertical dashed line. Pretty boring.

#RESTART

Very slightly less boring is the new indicator of goal restarts, as in your goal was archived and you restarted it: a vertical zigzag line like this:

Image

#SELFDESTRUCT

Self-destructing datapoints (mostly used for Pessimistic Presumptive Reports or PPRs) display as 1.5x sized dots and have a slash through them:

Image

4 Likes

These indicators are really good! Especially the restart indicator, which manages to convey the logical discontinuity in the graph. (Though, maybe, I could imagine a stronger version, which e.g. shades in gray the entire period from the last prior datapoint until the restart, to better convey that this period was unbeeminded.)

While I like the ability to put my own hashtags on the graph, I’ve never liked that Beeminder intrudes on that with its own magic string hashtags. (And because they are magic strings, I can’t remove them without interfering with their operation.) So ideally these visual indicators would replace the hashtags on the graph. It seems like it currently does so for restarts, but not for the others? At least, I see old derailments marked with both #DERAIL and the red triangle on the graph.

2 Likes

Great idea! The easiest way for us to do this might be to add a new magic string / dummy datapoint: #ARCHIVE. Then anything between #ARCHIVE and #RESTART could be grayed out. (Or of course we could keep track of this separately in metadata. Or, I don’t know, in for a penny, in for pound? With the magic strings I mean. Third option: just gray out everything to the left of a restart, back to the most recent datapoint, which would often but not necessarily be when the goal was archived.)

Relatedly, I’d like for the bright red line to not be drawn during periods when the graph was archived.

Ah, you now at least have control over that with the @-versions of the hashtags. We talk about this on the blog, but let me also repeat this beemail blurb:

Our idea was that it’s generally good for the graph to self-document with annotations about derailments, restarts, PPRs, and tarings. But at least one of you hates this, so I wanted to get a better sense of how others feel. I think the biggest potential problem (other than it never having occurred to you to even turn on the hashtag feature – which maybe should default to on going forward) is that if you zoom out a years-long graph or you derail often then the hashtag annotations are cluttery or even unreadable.

Just to lay out all your options currently:

  1. Leave the hashtag feature off and see no annotations on the graph
  2. Turn on hashtags and see one’s own plus meta-datapoint tags
  3. Turn on hashtags and delete/edit the meta-datapoints to not have hashtags, losing the other features of the magic strings
  4. Turn on hashtags and change the #XYZ magic strings to @XYZ

So option 4 is new and is closer to the best of all worlds, except the part where you have to edit each meta-datapoint if you don’t want those on your graph (but do want your own hashtags).

If this drives more than one of you crazy, we may rethink this, or, god forbid, add a new setting or generalize the existing one to give you more control of what your graphs gets annotated with.

1 Like

I think this is simple and gets you basically what one wants, though I guess it technically might include a few pre-archive days when the user was merely consuming safety buffer.

Yes! Very much agreed. But if you’re going to do that, then it’s probably best to do so only when the goal was actually archived, rather than from the last datapoint. So maybe I take back what I said above about the from-last-datapoint version being simple and sufficient.

Oh! I didn’t realize you actually implemented that! In my head that was just something you proposed you might do if people wanted it—but, no, I see that you were in fact saying that’s an option currently. Great!

I wouldn’t say it drives me crazy, per se, just that I’d prefer to have explicit control of what the graph is annotated with. And the @-tags feature gives me that, which is great. Simply having control over it is quite enough. (It might be more annoying when it comes to self-destructing datapoints, which appear anew each day—but I personally prefer not to use PPRs, even on manual do-less goals. If I did, I think I’d write a script that polls the API for datapoints with the #SELFDESTRUCT tag and automatically updates them to use the @ version instead.)

2 Likes

First draft of the idea, on a graph that was archived and restarted 3 times over the years:

This is actually live already at the graph.beeminder.com version of the graphs if you want to experiment. You just need to add your own #ARCHIVE tags to mark when the archivings happened.

You could call it a feature that PPRs are as annoying and ugly and in your face as possible. All the more incentive to hurry and add the real data that will make them self-destruct!

1 Like

Took me a minute to get used to this, but I’m a fan now, especially on realizing that the @ magic strings won’t appear on the graph while the # tags will.

fyi, for anyone who wondered as I did, looks like the magic is case sensitive:

3 Likes

How does one get a view where you can see all the restarts like in your picture? When I restart a goal, the graph just starts anew. I can see the vertical zigzag line, but it’s at the far left of the graph. Admittedly, I am mostly looking at the iOS app.

1 Like

The x-min can be changed accordingly to how far back you would like to see on the graph.

It is under the settings (graph settings) for each of your goals.

https://www.beeminder.com/username/goalname#settings

2 Likes

Aha! Thank you!