I have plotted 30,000+ points in QGIS by postcode, various data items for each. How do I resize these plots based on the activity at each of these points i.e. small dot for <100, larger dot for 100-200 and larger dot for 200+?
If you only have a few categories you want to map, then the rule-based rendering (Style tab under Properties) can give you different symbols based on values of an attribute.
You'll want to make three rules, each of which has a different symbol size and a rule for how to classify it. For example, in the Rule Properties dialog:
Then for the next category:
... and so on for other categories.
Proportional symbols are something I really miss as an automatic function in QGIS - it's probably the only function that ArcGIS has that I really need anymore.
Update I assume you have a spatial point file with one point for each of PC1, PC2, etc? Given the data in your comment:
You will need to summarise the number of rows where each locator appears and join it to your point shapefile.
While this is an ideal situation to use a database (sqlite, postgis, mysql), here's a way to do it with tools you'll have (or can get easily):
You will now have a new column in your point shapefile called 'Activity' which you can use to create different symbol sizes, as above.
Note: if you're doing this a lot, it's definitely worth developing a database to store both your activity data and point file!
Update the second (and last) ... using sqlite
I find the spatialite-gui application the easiest and often quickest way to deal with spatialite dbs - it does all the spatial refs / geometry columns by default and it's easy to import shapefiles and other tables. In spatialite-gui, create your example.sqlite and:
In QGIS, I like to use the DB Manager plugin to run SQL commands (you'll need to install it). After you've added the example.sqlite points layer, you'll have access to the .sqlite database in the plugin. Open it, then select the example.sqlite db in the tree and click 'SQL window'. You can use something like:
Where: bna_pts is your imported shapefile and bna_acts is the activity CSV, and 'Loc' is the locator name. Execute it, select 'load as new layer', give it a name, and you have the points file with 'Activity' as the total number of activities at each point.
You can set this up far more automatically - read up on sqlite!
As far as I know, this is not supported by default.
The feature that comes closest is the "Point Displacement Renderer". With some modifications, it should be possible to to change it to your desired behavior.