I have a dataset with multiple sampling events that I want to style by season (or "temporada" in my attribute table) and "EP Chinook". Data is from a csv file.

I styled with point displacement to show multiple sampling events.

Then I used categorized render settings to show different seasons, and used size scale fields to show "EP Chinook"

enter image description here

The problem I am running into is the points are way too big. enter image description here

I have tried writing expressions to change the size but there is no geometry for diameter, which is what I want to show. Such as:

$area="EP Chinook"

but this just makes the size of the points stay the same.

I think the reason I am having problems with the points being so big is that the layer still needs to be written so that minimum values remain visible.

I am new to QGIS (about 2 months of self taught) and am coming off of a moderately novice background with ArcMap.

I think I have found another way to style my data that will be appropriate. -different symbols for months -graduated color scale for "EP Chinook" -point displacement for multiple sampling events

However, this is a temporary fix; it would still be nice to label the points using the initial styling I asked about.

  • you have to set the units of your scale-field (mm, px, map units) and probably re-scale your values. (ie: the standard setting is millimeters, so if your values go as high as 1000, qgis draws you a 1.0m circle)
    – ymirsson
    Commented Dec 3, 2015 at 19:06
  • I changed to map units (I did not see any option for "px") and everything was too small to see without zooming in a ridiculous amount.
    – DylanMG
    Commented Dec 3, 2015 at 20:10
  • you need to rescale your values (new field or OTF) with scale_exp(x, from_min, from_max, to_min, to_max, power) to an appropriate range, depending on your unit setting.
    – ymirsson
    Commented Dec 3, 2015 at 21:13

2 Answers 2


Straightforward process:

The engine needs a unit-system (mm, px, map units) to interpret the values: scr1

Choose one fitting (or almost fitting) to your dataset, projection and map(-goal).

A dataset [10,35,20,55,2] will be hard to see/distinguish on a px-scale but somewhat right on a mm-scale.
map-units may fit, depending on your projection and map, ie.: 30° is a bigass circle, but an appropriate country-size on a world map. 30m is nothing from a 1:500'000 view, but spans about 1/4 NY-Block.

as example, size = "B" in map units:
EPSG:3857, so everything around 1m scr2

and EPSG:4326, same dataset in deg. scr3

If you have found your unit-system, you can/need/want to refine the domain with:

scale_exp(x, from_min, from_max, to_min, to_max, power)

Find your current min/max and choose a new range and a fitting-curve (ie.: power=1 for linear or higher/smaller than 1 for a slower or more rapid escalating curve).
You can do this either on-the-fly (better option, since scaling may take some try&error): scr4

or - if you can't find it or your version lacks the functionality - via the field calculator: scr5

Hope that helps.


The expression should evaluate to either the area of diameter of the symbols. So instead of:

$area = "EP Chinook"

Try something like:

"EP Chinook"/10.0

Ie, this will scale the value in the field by 1/10th. You'll need to experiment with different factors until it looks right.

Alternatively, if you can upgrade to QGIS >= 2.12 there's a handy "size assistant" option which helps you do this interactively.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.