I'm testing this code:
<svg height="150" width="150">
<defs>
<radialGradient id="grad1" cx="80%" cy="20%" r="100%" fx="100%" fy="50%">
<stop offset="0%" style="stop-color:rgb(0,0,255);stop-opacity:1" />
<stop offset="100%" style="stop-color:rgb(0,200,255);stop-opacity:1" />
</radialGradient>
</defs>
<ellipse cx="100" cy="100" rx="30" ry="30" stroke="url(#grad1)" stroke-width="3" fill="none" stroke-linecap="round" stroke-dasharray="200" stroke-dashoffset="20" transform-origin="100 100" transform="rotate(-95)"/>
</svg>
I've tested with stroke-dasharray="200" and stroke-dashoffset="20" that is the most accuracy values I found. Base on this I must find the values to set the % of the circle. With troke-dasharray="200" stroke-dashoffset="20" the circle is functionality on 10% jumps but when I want to set values between 91%-99% the circle seems like be full completed. Looks like with values near to 0% the circle looks like empty.
I need to set with full accuracy the % of the circle with no rotation of that. (The circle must begin on the top of it)
Sorry if my english is not perfect. Thanks.