A little app to see flowering patterns around the globe

Seeing a Silk Floss Tree (Ceiba speciosa) blooming in Portugal in November was super odd for me. As a Brazilian, I am used to see these flowers much earlier in the year.

So I wondered when people saw them bloom around the world.

I co-vibe-coded a little open-source vanilla javascript app to see that:

http://tiago.bio.br/phenoplot/?species=Ceiba+speciosa&species_id=154290&max=800&lang=pt

Pyrostegia venusta, for example, is a winter flowering plant here in Brazil, where it is native.

http://tiago.bio.br/phenoplot/?species=Pyrostegia+venusta&species_id=126634&max=800&lang=pt

Apparently it also flowers on winters in the north!

I have also added a little button to try and help to get more phenology annotations; most observations don’t really have that degree of information now:

AI made it easy to have an interface in multiple languages. It should be straightforward to add more (though with the usual caveats of machine translation)

Code is open at https://github.com/lubianat/phenoplot

Have fun! Feedback is always welcome :slight_smile:

EDIT: autocomplete is currently buggy on mobile, sorry! Blame on me for not testing on multiple platforms

6 Likes

i think it’s an interesting idea, but the issue with this sort of thing is that it requires getting observation-level data. for taxa with large numbers of observations, you either have to download a ton of data, or you download only partial data. (i think your page does the latter.)

you also end up with potential situations where markers overlap other markers, and you have to decide which one to display. for example, if one is yellow for August and another is red for May, and they overlap, which one do you display?

for what it’s worth, iNaturalist has a page that allows you to see a time series animation of observations. it address both of the problems above by showing different intervals at different times. for example, this cycles through 12 sets of data (one per month) in series: https://www.inaturalist.org/observations/torquemap?interval=monthly&taxon_id=126634.

i’ve also created custom maps using iNat’s UTF grids. one technique allows you to display 4 sets of data in four corners, and it could display, say, 4 quarters of data. the advantage over a time series animation is that you can see all the data in one glance. here’s an example of a custom map that shows Monarch butterfly observations over 4 months in 2019: https://jumear.github.io/stirfry/iNat_UTFgrid_based_custom_density_map?example=5.

4 Likes

Thanks!

1 - Yeah, the dashboard does a random sample of the observations there. I found it okay to see trends in general

2 – I am displaying both markers with some transparency; the sampling in fact helps with that, there is not that much room for overlap. Some overlap is okay for an exploratory tool, but I agree, “publication-quality” plots would need some alternative there

Also, markers are clickable and show a popover, I found it an interesting to navigate to particular obs.

3 – Oh, I did not know about : https://www.inaturalist.org/observations/torquemap?interval=monthly&taxon_id=126634, that is interesting, thank you for sharing. Though, there is not a . Though I really wanted to plot this third “monthly” dimension in some static way. Different colours in a loop seemed to be the simplest way, but I am open

It seems to accept the other API values for filtering by flowering obs (https://www.inaturalist.org/observations/torquemap?interval=monthly&taxon_id=154290&term_id=12&term_value_id=14), though I found it harder to grasp the overall pattern to be honest.

Thank you for sharing the UTF grid too, good suggestion.

if you can categorize your data into a set and a subset of that set, then you could also use a different custom mapping technique to see proportion of observations in a particular location that fall into the subset. so for example, here are flowering Silk Floss Tree observations, showing proportion of all those observations that occur between Feb and July: https://jumear.github.io/stirfry/iNat_map?view=subsetratio&taxon_id=154290&term_id=12&term_value_id=13&month=2,3,4,5,6,7&compare_exclude_param=month.

this has 2 layers that you can activate to click and see the latest observation that falls in a particular marker. (one allows you to see the latest observation in the subset, and the other allows you to see the latest observation in the whole set.)

2 Likes

Oh, this looks super good! Beautiful

I notice that the torquemap function also works with observation fields, for example:

https://www.inaturalist.org/observations/torquemap?interval=monthly&taxon_id=481934&field:ripe%20fruits=yes

Is it possible to also set a step-though mode to the display?

2 Likes

damn, i dont know of this. thanks

1 Like

Answering my own question: to slow things down for viewing, using a weekly display for the torquemap works nicely:

https://www.inaturalist.org/observations/torquemap?interval=weekly&taxon_id=481934&field:ripe%20fruits=yes

Of course, this only works because I have annotated this taxon for the occurrence of ripe fruit.

1 Like

this torque map is really cool. I noticed that it slows down between intervals if there are a bunch of observations during that particular interval… i’m guessing it’s adhering to the rate limited fetching requirements in the background as it’s retrieving data for each individual interval. does anyone know if there’s a way to tell it to retrieve all the data for all intervals up front?

could there be a button to record an expensive animation such that it could be shared broadly without the iNat servers having to re-execute the queries?

1 Like

If you prefer a static view then try this.

3 Likes

Thanks, that’s very useful! It doesn’t give a step-through of months on a map, but I can pick them one at a time, and it lets me overlay all observations to see what fraction of plants have ripe fruit in different months.

this is really powerful :O

I am trying to find nymphs clues of two species of bugs (we know adults and I IDed all of them) - now by adding three fields of adult sp1, adult sp2, nymphs in that link - i can readily see on map if there are exclusive pockets of one adult only and find better mapping to nymphs

1 Like