The QGIS Atlas does not require that each page in the series be spatially distinct. In the map frame's Item Properties, ensure that the option Controlled by Atlas is not checked.
It does seem, however, that you have a series of attribute values, as opposed to individual features, that you want an atlas for. This can still be accomplished using an atlas, but ...
This is what the Atlas feature in QGIS is designed to do.
In the Layout view click the button at the top on the far right called Atlas Settings:
Set the Coverage layer to the polygon layer that you want to iterate through, configure the rest of the options there as you see fit, sorting, filtering, etc if needed.
Then go to the Map item in the Layout table of ...
It seems you are using WGS84 geographic coordinate reference system (CRS) or any other CRS that uses degrees as a unit of measurement. Therefore, adding a scale bar has no meaning in your layout, as you already discovered when you added one to your map.
The scale bar is useful with projected CRS, such as UTM that uses meter as a unit of measurement.
I would create an atlas with a geom for each species (all geoms should be the same, a just a point in the same place or a boundary that defines the extent) and each geom should have an attribute with the species name. Set the atlas page name to be the atlas layer attribute. You can then use @atlas_pagename as the title and filename of the export of each page
You're on the right track with if else but case would be easier, it's similar to if else but easier for more options.
In expressions $area returns the area of a polygon in square metres or feet depending on the coordinate system.
So we use case to create different label sizes depending on the $area value for the polygons.
In the label properties add an ...
To add another option to @TeddyTedTed answer You may use the scale_linear (or scale exp) fonction :
function scale_linear Transforms a given value from an input domain to an output range using linear interpolation.
(the scale_exp fonction do the same but using an exponential curve)
This will give you a big range of text size without having to input many ...
I think the main issue here is, that there is no option to set the auto-refresh rate of print-layout-maps (at least none that I know of). So you can use data defined override for your extents as below, but the print-layout-canvas will only refresh if you manually click on the refresh button, minimize and remaximize the printlayout window, or something like ...
from script you can do it with the following code fragment:
manager = QgsProject.instance().layoutManager()
#layout = manager.layoutByName("Layout1") # name of the layout
layout = manager.layouts() # or first layout
exporter = QgsLayoutExporter(layout)
If you like, you can create a new layout using N instead of Ctrl + N as it is reserved for creating New QGIS project. To do that:
Go to Settings -> Keyboard shortcuts
Search for New print layout
Click on Change button
Press letter n on your keyboard and it will be changed to N
Then close the window.
Go to Project -> New print layout, and you will ...