In QGIS 3.22 I have got 2,000 points distributed unevenly over 50 shp. All the points in each shp have the same coordinates and stand for ecological observations. They are represented by displaced symbols on a common ring for each shp.
Is there a way to align the ring symbols (or the shapefiles) on a vertical line next to the actual positions?
maybe using specific coordinates (i.e. with a common X, but different Y)? I have read about the Vertex Editor working with coordinates, but it seems that it only works for a single vertex/point, and I don't want to do that for each single one of those 2,000 points.
or might there be a symbology tool that does just that?
or is there a variable approach to it?
edit: Here is a screenshot of a part of my map, indicating what I want it to look like. Since the map has to cover the whole area and the symbol rings overlap a lot at that scale, I want them to spread across the page and be aligned top to bottom on the left hand side. (To clarify which place each symbol refers to, my idea was to add one layer with labelled single markers for the actual positions and another one with line vectors connecting each marker point with its corresponding symbol.)
edit: This is what it looks like after using the Geometry Generator with @Babel's expression (I changed the original "+ 50000" to "+ 50", otherwise the symbols would not show up at all):
make_point (
x_min (@map_extent) + 50, -- distance from left border of map canvas
y_max (@map_extent) - $id * 10 -- vertical distance
)


translateexpression : https://docs.qgis.org/3.22/en/docs/user_manual/expressions/functions_list.html?#translate – J. Monticolo Dec 02 '22 at 09:26color legend: https://gis.stackexchange.com/a/385506/88814 If I understood it correctly, it is similar to what you want to do, right? – Babel Dec 02 '22 at 12:38$id * 10part choose a number that corresponds to a suitable vertical distance. If unsure and don't have success, alternatively resplace with something like:$id * ( y_max(@map_extent) - y_min(@map_extent)) / 10and change10by the numer of points you have + 1. – Babel Dec 05 '22 at 14:1110by(array_length(array_agg( $id)) +1 ), so it evenly distributes vertically the number of points you have. – Babel Dec 05 '22 at 14:16