How to style graduated using size-scale field

How to style graduated using size-scale field

Is it possible to style based on size-scale field using graduated symbol but instead of using color ramp, I would like to display its size. I would also like to display this in the legend in the map composer. It would be nice if I could also apply this if I'll use svg marker (example 2nd image below).

From this:

to something like this:

I have managed to figure out how to achieve this but I don't know if this is the best way to do this. I used Rule-based styling, screenshots below:

And then I individually set the sizes of svg marker for each "category":

And this is what it looked like in my canvass:

Unfortunately, I don't like the results I have in print composer:

I've read a similar question here but based on the 2nd answer of that post, the sizes of the circles in the legend were different from the canvass.

You can set up the initial colour ramp and then change each symbol and range manually by double clicking on it.