Pull to refresh

Bluff — библиотека для рисования графиков в канвасе

Reading time4 min
Views588
Недавно знакомый дал ссылку на очень неплохую javascript библиотеку для рисования самых разных графиков в канвасе. Называется она Bluff. Ниже немного о ней.

Как использовать



Все графики имеют примерно одинаковый способ инициализации:
// Создаем объект, указав его id и ширину
var g = new Bluff.Line('example', 400);

// Задаем тему и настройки
g.theme_keynote();
g.title = 'My Graph';

// Передаем данные и названия графиков
g.data('Apples', [1, 2, 3, 4, 4, 3]);
g.data('Oranges', [4, 8, 7, 9, 8, 9]);
g.data('Watermelon', [2, 3, 1, 5, 6, 8]);
g.data('Peaches', [9, 9, 10, 8, 7, 9]);
g.labels = {0: '2003', 2: '2004', 4: '2005'};

// Рендерим
g.draw();


По умолчанию, соотношение сторон 4:3. Но высоту можно так же задавать и в ручную:

var g = new Bluff.Line('example', '800x300');

Текущая версия библиотеки поддерживает следующие виды графиков:
  • Bluff.AccumulatorBar
  • Bluff.Area
  • Bluff.Bar
  • Bluff.Dot
  • Bluff.Line
  • Bluff.Mini.Bar
  • Bluff.Mini.Pie
  • Bluff.Mini.SideBar
  • Bluff.Net
  • Bluff.Pie
  • Bluff.SideBar
  • Bluff.SideStackedBar
  • Bluff.Spider
  • Bluff.StackedArea
  • Bluff.StackedBar


Данные из HTML



Выше был рассмотрен способ передачи данных через массив, однако Bluff так же позволяет вставлять данные из HTML таблиц. Главное удостовериться в том, что тэг выставлен верно. Например,

Annual Fruit Sales
Apples Oranges Watermelon Peaches
1 4 2 9
2003 2 8 3 9
3 7 1 10
2004 4 9 5 8
4 8 6 7
2005 3 9 8 9

image
<table id="data">
  <caption>Annual Fruit Sales</caption>
  <thead>
   <tr>
    <th scope="col"></th>
    <th scope="col">Apples</th>
    <th scope="col">Oranges</th>
    <th scope="col">Watermelon</th>
    <th scope="col">Peaches</th>
   </tr>
  </thead>
  <tbody>
   <tr>
    <th scope="row"></th>
     <td>1</td> <td>4</td> <td>2</td> <td>9</td>
   </tr>
   <tr>
    <th scope="row">2003</th>
     <td>2</td> <td>8</td> <td>3</td> <td>9</td>
   </tr>
   <tr>
    <th scope="row"></th>
     <td>3</td> <td>7</td> <td>1</td> <td>10</td>
   </tr>
   <tr>
    <th scope="row">2004</th>
     <td>4</td> <td>9</td> <td>5</td> <td>8</td>
   </tr>
   <tr>
    <th scope="row"></th>
     <td>4</td> <td>8</td> <td>6</td> <td>7</td>
   </tr>
   <tr>
    <th scope="row">2005</th>
     <td>3</td> <td>9</td> <td>8</td> <td>9</td>
   </tr>
  </tbody>
 </table>
 <canvas id="graph" width="300" height="225"></canvas>
 <script type="text/javascript">
  var g = new Bluff.Line('graph', '300x225');
  g.theme_odeo();
  g.data_from_table('data');
  g.draw();
 </script>

* This source code was highlighted with Source Code Highlighter.


Темы



Что такое тема это вполне понятно. Тема должна быть выставлена до задания прочих цветовых опций и задания данных. Тему можно как задать самому, так и использовать стандартную. Чтобы задать тему в ручную, необходимо задать значения для colors, marker_color, font_color и выбрать цвет бэкграунда morebackground_colors:

g.set_theme({
colors: ['#202020', 'white', '#a21764', '#8ab438',
'#999999', '#3a5b87', 'black'],
marker_color: '#aea9a9',
font_color: 'black',
background_colors: ['#ff47a4', '#ff1f81']
});


А ниже список доступных тем по умолчанию:
g.theme_keynote();
g.theme_37signals();
g.theme_rails_keynote();
g.theme_odeo();
g.theme_pastel();
g.theme_greyscale();


Всплывающие подсказки



Некоторые из графиков поддерживают использование всплывающих подсказок. Их внешний вид можно задать с помощью css, так как показано ниже:
<div class="bluff-tooltip">
  <span class="label">
   <span style="color: #abcdef;"></span>
   Data series name
  </span>
  <span class="data">
   42
  </span>
 </div>


* This source code was highlighted with Source Code Highlighter.


Чтобы включить подсказки задайте следующий параметр g.tooltips = true , когда создаете график. Подсказки работают со следующими типами графиков:
  • Bluff.AccumulatorBar
  • Bluff.Bar
  • Bluff.Line
  • Bluff.Mini.Bar
  • Bluff.Mini.SideBar
  • Bluff.SideBar
  • Bluff.SideStackedBar
  • Bluff.StackedBar

Вот такая неплохая либа.
Tags:
Hubs:
+7
Comments3

Articles

Change theme settings