So I am coding stuff and I printed out the joystick values but they are not in a circle. So if I push axis 3 to 100% then it read 100% but if I then move the joystick to amount 45 degrees it is around 80%.

If it rly a problem u could run the joystick values through a logarithmic equation that makes the joy vals closer to 0 give a higher than normal rpm and higher joy vals give a lower than normal joy vals. y=x would prob be the asymptote of the line which means that max rpm would be lowered unless x=100 of the logarithmic equation intercepts with y=x.

Let pretend that I graph my joy stick on an x,y axis x = axis3 and y = axis 4 at 45 degrees it is 80 but if I graph a circle with a radius of 100 a 80,80 isn’t on that line so why does it read 80,80 if it only goes to 100% it shouldn’t be able to but it does

The joystick axis’s read x and y values. If you want to get whether or not the joystick is fully stressed you can easily do it with trigonometric calculations.

it isn’t thought when I test it. When testing the joystick at 45 degrees all the way pushed to the stop it reads 80% and when graphed 80%,80% is not on the circle it out side of it.

K so I ran some numbers and to hit 80, 80 at 45 degrees the circle would require a radius of 113. But that means that the maximum value of a v5 controller would be greater than 100. Have you tried graphing all the values? Like around the entire circle?

If its properly read at a 45 degree angle fully stressed, you would use a 45 degree unit triangle to figure out why that happens:
(1/sqrt(2)) * 100 = roughly 70

The max values I found out is 127 (you have to look in the controller class) but the same problem happens when using the .value method rather than the .position method