Pull to refresh

Comments 22

Я пользуюсь вот этой библиотекой: https://github.com/kottenator/jquery-circle-progress
Позволяет использовать картинку как «заливку», что довольно удобно.

Не рекламы ради, но можете посмотреть результат например тут:
https://sp-yuga.ru/s1313/
мне понадобилось отображать проценты в круглых графиках(?)
И как обычно я принялся искать готовое решение в интернете, однако ничего путного найти не удалось (возможно из-за того что я точно не знаю как этот элемент правильно называется)

Называется pie chart

Даже Pie / Donut chart (круговая / кольцевая диаграмма соответственно, если по-русски). Примеры (на d3.js): простая кольцевая диаграмма, множественная кольцевая диаграмма, библиотечка d3pie (для автора её функционал, наверное, излишен).

Нет, pie chart — это немного другое. То, что сделал автор, называется doughnut chart

Использовать звёздочку в качестве знака умножения в LaTeX — дурной тон.

$$\text{percentage}\cdot 3,6 - 90$$
$$\text{radian} = 2\cdot \pi \cdot \frac{\text{percentage}}{100}$$

image
Для защиты текста, от превращения в последовательность переменных используйте

 \text{}
UFO just landed and posted this here
Также в google charts можно получить донат из pie chart, используя свойство pieHole
Спасибо большое за статью.
Совсем недавно тоже решал вопрос с построением диаграмм. Только мне нужно было ее еще и сделать анимационной. Искал множество решений и через CSS и через библиотеки, но ни один вариант не понравился. В итоге создал свою диаграмму с возможностью настройки отображения диаграммы. Исходный код класса диаграммы и ссылка на демо. Буду признателен, если хабровчане прокомментируют мое решение. Спасибо большое!)
выглядит не эстетично, нужно бы добиться плавных линий…
image
Наше руководство любит «спидометры». Пожалуй, переведу пару отчетов на Вашу разработку, может, понравится им новый вид.

Достаточно канвас очищать на каждом кадре

Простите, что пишу в эту ветку, так как aккаунт read only, у меня возник вопрос по функции ctx.arc(100,75,50,0,2*Math.PI). А состоит он вот в чем, как интерпертатор js понимает что 0,2 это число, не что «0» это один аргумент, а «2*Math.PI» это другой аргумент?
Делать 11 раз подряд вызов функции с одним и тем же аргументом — не самая лучшая практика.
$(dials[i])
Очевидно, JavaScript для автора — не родной.
Да, это называется donut charts.
В крайней своей задаче я использовал гугло графики. Есть еще аналоги например highcharts.
https://developers.google.com/chart/interactive/docs/gallery/piechart

Вот реальный скрин с продакшена:
image
В свое время столкнулся с подобной задачей, только вместо диаграмм были маркеры на карте для Leaflet с дополнительным функционалов вроде окрашивания в различные цвета в зависимости от состояния, индикации различных состояний на внешнем контуре в виде сегментов. Ввиду необходимости серьезной кастомизации под собственные цели отказался от использования готовых библиотек. Писал сам, встраивание, управление стилями, свойствами — обычным jQuery.

В первой итерации попробовал канвас — получился примерно такой же код, как приведен автором — те же смещения, углы поворота, постоянная отрисовка. На 4K+ объектов в итоге начали ощущаться серьезные лаги, явное замедление скорости работы. Особенно при изменении масштаба карты.

В итоге переделал с помощью SVG. Как результат:
— ощутимый прирост скорости рендеринга,
— втрое меньше кода,
— из чего вытекает отсутствие даже самой необходимости использования сторонних решений (весь код управления маркером + логика поведения без шаблонов умещается на одном экране),
— и самый весомый плюс — масштабируемость без потери качества. Более того, даже сам шаблон не потребовал создания путей и прочих элементов.
Для круглого маркера: подложка+слои по количеству отрисовываемых сегментов.
Так что с целью «поиграться» может и подойдет canvas, но гораздо проще и красивее задачу можно решить с помощью SVG графики.
Sign up to leave a comment.

Articles