Я хотел бы предложить альтернативу некоторым ответам "дуга" и "круговая диаграмма". Вы можете нарисовать легкую дугу, а затем повернуть ее в нужное положение (в градусах). Нет расчета координат. Нет плагина или утилиты.
В моем примере я создаю целый пирог. Итак, сначала создал самый большой кусок в виде круга. Затем создайте простые 90-градусные дуги в качестве других круговых сегментов. Преобразуйте и вращайте дуги, чтобы отрезать предыдущий кусок. Наконец, создайте кусок, чтобы отрезать последний (самый маленький) кусок.
В этом примере я намеренно оставил желтый сегмент коротким, чтобы красный круг просвечивал. Я мог бы легко добавить пирог второй четверти или нарисовать желтый как половину пирога (так как он был больше 90 градусов). Кроме того, если первая часть меньше 90 градусов, вы можете предварительно рассчитать, что последняя часть обложки будет меньше первой. Рисуя круговые диаграммы, я чувствую, что всегда буду иметь большой кусок, который могу отсортировать, чтобы быть первым.
В твоем случае я мог бы видеть это как две половинки пирога. Один остается на месте, другой поворачивается на нужный вам угол.
Надеюсь, это полезно.
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>Create Pie Chart</title>
<style type="text/css" media="screen">
svg {
display:block; border:2px solid #00c; position:relative;
top:0%; left:0%; width:100%; height:100%; background:#fff;
}
</style>
</head><body>
<svg width="12cm" height="5.25cm" viewBox="0 0 1200 400"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="300" cy="200" r="150" fill="red" stroke="black" stroke-width="1" />
<path id= "a1" d="M300,200 v-150 a150,150 0 0,0 -150,150 z"
fill="yellow" stroke="black" stroke-width="1" transform="rotate(180 300 200)"/>
<path id= "a2" d="M300,200 v-150 a150,150 0 0,0 -150,150 z"
fill="blue" stroke="black" stroke-width="1" transform="rotate(220 300 200)"/>
<path id= "a3" d="M300,200 v-150 a150,150 0 0,0 -150,150 z"
fill="green" stroke="black" stroke-width="1" transform="rotate(237 300 200)"/>
<path id= "a4" d="M300,200 v-150 a150,150 0 0,0 -150,150 z"
fill="maroon" stroke="black" stroke-width="1" transform="rotate(320 300 200)"/>
<path id= "a5" d="M300,200 v-150 a150,150 0 0,0 -150,150 z"
fill="red" transform="rotate(400 300 200)"/>
</svg>
<script>
c = 360;
c -= 160;
document.getElementById('a1').setAttribute("transform", "rotate(" + c + " 300 200)");
c -= 100;
document.getElementById('a2').setAttribute("transform", "rotate(" + c + " 300 200)");
c -= 50;
document.getElementById('a3').setAttribute("transform", "rotate(" + c + " 300 200)");
c -= 30;
document.getElementById('a4').setAttribute("transform", "rotate(" + c + " 300 200)");
c -= 20;
document.getElementById('a5').setAttribute("transform", "rotate(" + c + " 300 200)");
</script>
</body></html>