I will do it without subtracting the 500 then, no tampering with the results then.
There isn't any problem with subtracting 500 from the value. Just change the from range in the map() call to match what you are actually mapping FROM.
My guess is that the professional chart you show is based on measuring values from the pulse oxymeter far more frequently than you are, and not converting those values to strings, sending them over a serial port, and converting them back to floats. I'm guessing, too, that there is some smoothing going on in hardware, not software. Finally, I'm guessing that the professional chart is using a sensor for more accurate than what you can afford.
But, I could be all wrong.