https://gamepress.gg/pokemongo/guct-berry-throw-bonus-multipliers made an analysis about the throw bonus, and these are the results:
Throw Bonuses are not fixed, instead depends continuously on radius! The formula we found for catch bonus is:
Throw = 2−r
where r is the radius of the inner circle, which goes up to 1. That means that when the circle is as big as possible, Throw = 1, and when the circle is as small as possible, Throw = 2.
Since ring size and throw bonus are correlated, we could not be completely sure that the multiplier varies continuously with radius, rather than being a flat bonus for Nice / Great / Excellent.
However, the communication between client and server during a catch suggests that the bonus is continuous. What can be seen in the client-server communication is that a variable named normalized_reticle_size (NRS) is sent to the server when a ball is thrown.
In other words, for a full-sized circle, NRS = 1, and for a circle of minimal radius, NRS approaches 2.
Experimental evidence shows that:
Throw
Nice!
Great!
Excellent!
Target Ring Size
70% - 100%
30% - 70%
~5% - 30%
Bonus (varies with radius)
1 - 1.3
1.3 - 1.7
1.7 - ~1.95
We also have some lines from the game's code that shows:
"excellentThrowThreshold": 1.7,
"greatThrowThreshold": 1.3,
"niceThrowThreshold": 1,