Does anyone have a method for plotting species richness with iNat data?

I’m planning a trip anywhere in the US to see species I haven’t observed before. I want to use observation data from ~100 species of interest to generate a species richness map that will show me the most productive locations to go to (basically most species by county). I have all the occurrence data downloaded and cleaned, and now I’m hoping someone has an R script or something that can tie it all together. I’ve seen a couple on GitHub that don’t really fit my goals, but maybe I’m just overlooking some well known packages. Is anyone else doing this or thinking about this sort of project?

Take a look at this site:

There are a few different methods presented, all using R.

Personally, I don’t feel hat iNat data is entirely suitable for getting an accurate species richness count due in part to inherent biases in what observers observe, but for something casual it’s probably fine.

Would be interesting to compare species richness as calculated using iNat data vs richness using more rigorously collected data.


So you want a count of the number of species per county?

Do you have the associated county for each observation already?

Thanks! I was looking at that site earlier, but I guess I was unsatisfied with it because it uses “sites” as locational units, and it doesn’t offer a way to visualize richness. And I guess I could use counties as “sites”, but I’m holding out for a more direct method for making a visual heatmap of the US.

I do have a list of occurrences with counties. I could imagine using that data to find the best counties to go to, but I think what I’m really looking for is an accompanying map that visualizes the hotspots for my species of interest.

Hmm. Honestly, if you want to make a heatmap type visual map I’d probably use an entirely different method in that case and not even use iNat data at all.

I’d probably download the IUCN species range data and use ArcGIS or QGIS (open source and free) to calculate high points of species richness.

Or the USGS species range data - that link is to slightly older data, but you get the idea., or EarthData, or GBIF datasets.

Or just hunt down one of the many existing species richness maps for North America, eg:

1 Like

you mean like a county choropleth map (aggregating species counts by county)? or do you need something in more of a grid format (like the eBird species hotspot map)?

Either one would be great! A map like the eBird species hotspot map would be ideal though. My brain has an easier time making sense of species richness if the tiles have equal area.

the previous post has a link that has R code to produce a county choropleth. so you could adapt it. the key is finding a source for the county polygons (most sources are ultimately derived from Census Bureau data) and then attaching those polygons to your data (summarized as species count by county).

that grid isn’t an equal area grid. it’s just a grid of some set n deg lat x n deg long, and the area of the squares will vary based on latitude. (equal area would be much harder to do.) the eBird map looks like a 1 deg lat x 1 deg lng grid, but for the purposes of iNaturalist, you could probably go as granular as a 0.2 deg lat x 0.2 deg lng grid (to account for obscured points). the process for doing a grid like this could be similar to the county choropleth, except that instead of a set of county polygons, you would need a set of polygons that represent all the cells in the grid. you would aggregate your data based on which cell in the grid it falls into (which can be done by just looking at what the coordinates of each observation are). i don’t know if there’s an existing example of such a map (i don’t have time to search this morning), but it would be relatively easy to create the polygons for this, if there’s not such a set that already exists.


I believe iNat’s county boundaries are from TIGER 2012, which you can bring in to R with the tigris package, setting the year parameter. If you use the same counties iNat uses, you should be able to use the county associated with each observation and not run into any mismatches.
One benefit of using counties over a grid is that even obscured locations have been assigned to their true county in iNat, whereas if you have to assign coordinates to a grid yourself, you may end up assigning obscured coordinates to the wrong cell.

1 Like

These maps already exist for plants if you want to take a look

1 Like

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.