如何在一个svg圆中按每个圆弧百分比画几条圆弧?
How to draw several arcs in an svg circle according to each arc percentage?
我需要在 SVG 中表示类似于圆环图的东西。
我试图在同一个圆圈内绘制几条弧线,每条弧线的长度由先前给出的百分比定义。但是运气不好...
这是一张照片:
我需要的是,每个区域都会根据预先确定的百分比动态定义。
有谁知道如何做到这一点?
@user1835591 你怎么看?
<svg xmlns="http://www.w3.org/2000/svg" style="transform-origin:50% 50%;transform:rotate(270deg)" stroke-width="8%" fill="none" stroke-dasharray="400%">
<circle cx="50%" cy="50%" r="25%" stroke="#ff8c00"/>
<circle cx="50%" cy="50%" r="25%" stroke-dashoffset="284%" stroke="#7fffd4"/>
<circle cx="50%" cy="50%" r="25%" stroke-dashoffset="318%" stroke="#228b22"/>
<circle cx="50%" cy="50%" r="25%" stroke-dashoffset="352%" stroke="#6495ed"/>
<circle cx="50%" cy="50%" r="25%" stroke-dashoffset="376%" stroke="#4169e1"/>
<circle cx="50%" cy="50%" r="25%" stroke-dashoffset="390%" stroke="#ffa500"/>
</svg>
这是我用来解决类似情况的方法:
<svg xmlns="http://www.w3.org/2000/svg" height="20" width="20" viewBox="0 0 20 20">
<circle r="5" cx="10" cy="10" stroke="red" stroke-width="10" />
<circle r="5" cx="10" cy="10" stroke="green" stroke-width="10" stroke-dasharray="calc(60 * 31.42 / 100) 31.42" transform="rotate(-90) translate(-20)" />
<circle r="5" cx="10" cy="10" stroke="yellow" stroke-width="10" stroke-dasharray="calc(40 * 31.42 / 100) 31.42" transform="rotate(-90) translate(-20)" />
<circle r="5" cx="10" cy="10" stroke-width="10" fill="white" />
</svg>
计算百分比您需要计算最后一个圆圈的百分比 "yellow",然后计算第二个圆圈的百分比 "green",您必须计算百分比并对黄色圆圈百分比求和。
示例:
- 黄色 -> 20% -> 计算 (20 * 31.42 / 100) 31.42
- 绿色 -> 30% -> 计算(50 * 31.42 / 100)31.42(50 = 20(黄色)+ 30(绿色))
我需要在 SVG 中表示类似于圆环图的东西。 我试图在同一个圆圈内绘制几条弧线,每条弧线的长度由先前给出的百分比定义。但是运气不好...
这是一张照片:
我需要的是,每个区域都会根据预先确定的百分比动态定义。
有谁知道如何做到这一点?
@user1835591 你怎么看?
<svg xmlns="http://www.w3.org/2000/svg" style="transform-origin:50% 50%;transform:rotate(270deg)" stroke-width="8%" fill="none" stroke-dasharray="400%">
<circle cx="50%" cy="50%" r="25%" stroke="#ff8c00"/>
<circle cx="50%" cy="50%" r="25%" stroke-dashoffset="284%" stroke="#7fffd4"/>
<circle cx="50%" cy="50%" r="25%" stroke-dashoffset="318%" stroke="#228b22"/>
<circle cx="50%" cy="50%" r="25%" stroke-dashoffset="352%" stroke="#6495ed"/>
<circle cx="50%" cy="50%" r="25%" stroke-dashoffset="376%" stroke="#4169e1"/>
<circle cx="50%" cy="50%" r="25%" stroke-dashoffset="390%" stroke="#ffa500"/>
</svg>
这是我用来解决类似情况的方法:
<svg xmlns="http://www.w3.org/2000/svg" height="20" width="20" viewBox="0 0 20 20">
<circle r="5" cx="10" cy="10" stroke="red" stroke-width="10" />
<circle r="5" cx="10" cy="10" stroke="green" stroke-width="10" stroke-dasharray="calc(60 * 31.42 / 100) 31.42" transform="rotate(-90) translate(-20)" />
<circle r="5" cx="10" cy="10" stroke="yellow" stroke-width="10" stroke-dasharray="calc(40 * 31.42 / 100) 31.42" transform="rotate(-90) translate(-20)" />
<circle r="5" cx="10" cy="10" stroke-width="10" fill="white" />
</svg>
计算百分比您需要计算最后一个圆圈的百分比 "yellow",然后计算第二个圆圈的百分比 "green",您必须计算百分比并对黄色圆圈百分比求和。
示例:
- 黄色 -> 20% -> 计算 (20 * 31.42 / 100) 31.42
- 绿色 -> 30% -> 计算(50 * 31.42 / 100)31.42(50 = 20(黄色)+ 30(绿色))