<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SamuraiDio &#187; gráficos</title>
	<atom:link href="http://blog.diovani.com/tag/graficos/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.diovani.com</link>
	<description>GNU/Linux &#124; PHP &#124; JavaScript</description>
	<lastBuildDate>Sat, 18 Dec 2010 21:19:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Gráficos dinâmicos com JavaScript e &lt;canvas&gt;</title>
		<link>http://blog.diovani.com/2008/06/12/graficos-dinamicos-com-javascript-e-canvas/</link>
		<comments>http://blog.diovani.com/2008/06/12/graficos-dinamicos-com-javascript-e-canvas/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 19:20:14 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[gráficos]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/06/12/graficos-dinamicos-com-javascript-e-canvas/</guid>
		<description><![CDATA[É comum encontrarmos scripts para gerar gráficos dinamicamente como imagens, utilizando PHP, ou em Flash, porém também é extremamente fácil gerar gráficos utilizando apenas padrões web, com JavaScript e &#60;canvas&#62; ou SVG.
Recebi hoje um e-mail de um estudante de engenharia elétrica solicitando ajuda para gerar gráficos dinamicamente em um microcontrolador utilizando apenas HTML, CSS, XML [...]]]></description>
			<content:encoded><![CDATA[<p>É comum encontrarmos scripts para gerar gráficos dinamicamente como imagens, utilizando PHP, ou em Flash, porém também é extremamente fácil gerar gráficos utilizando apenas padrões web, com JavaScript e &lt;canvas&gt; ou SVG.</p>
<p>Recebi hoje um e-mail de um estudante de engenharia elétrica solicitando ajuda para gerar gráficos dinamicamente em um microcontrolador utilizando apenas HTML, CSS, XML e JavaScript. Embora sempre tenha utilizado PHP para gerar gráficos em imagens, já sabia que isto seria perfeitamente possível apenas com linguagens client-based, mas nunca me preocupei em desenvolver algo do tipo.</p>
<p>Pesquisando um pouco sobre o assunto, pude encontrar vários plugins e scripts para gerar gráficos utilizando JavaScript, como por exemplo, existem pugins para gerar gráficos utilizando <a href="http://jquery.com/">jQuery</a> ou <a href="http://dojotoolkit.org/">Dojo</a>, mas um que me chamou a atenção é um extremamente simples e fácil de usar, o Javascript <a href="http://webfx.eae.net/dhtml/chart/chart.html" title="Javascript para gerar gráficos dinamicos">Chart Widget</a>.</p>
<p>O script pode desenhar gráficos utilizando &lt;canvas&gt;, SVG ou mesmo &lt;div&gt;. O padrão é que seja utilizado &lt;canvas&gt;, por ser mais rápido e proporcionando um visual mais bonito que os demais, podendo inclusive ser visualizado no MSIE, com a adição do <a href="http://excanvas.sourceforge.net/">JavaScript ExplorerCanvas</a>.</p>
<p>Para utilizar o <em>Chart Widget</em> em uma página, primeiro é necessário adicionar os scripts <em>chart.js</em>,<em> canvaspainter.js </em>e o CSS <em>canvaschart.css</em>, adicionalmente, o <em>excanvas.js</em> deve ser incluído para suporte ao MSIE.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;includes/excanvas.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;includes/chart.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;includes/canvaschartpainter.js&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;includes/canvaschart.css&quot;</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></div></div>

<p>Após os scripts estarem incluídos corretamente, basta adicionar um elemento &lt;div&gt; ao corpo do documento HTML, com a largura e altura desejadas para exibir o gráfico:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;chart&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;chart&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;width: 400px; height: 200px;&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>

<p>Então baste adicionar o código Javascript para criar o gráfico. É importante verificar que este código deve ser executado no evendo <em>load</em> da página, ou então ser adicionado logo após o elemento &lt;div&gt; que exibirá o gráfico.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">ieCanvasInit<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'includes/iecanvas.htc'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> c <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Chart<span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'chart'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">setDefaultType</span><span style="color: #009900;">&#40;</span>CHART_AREA <span style="color: #339933;">|</span> CHART_STACKED<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">setGridDensity</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">5</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">setVerticalRange</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">setHorizontalLabels</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">'mon'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'tue'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'wed'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'thu'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'fri'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
c.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Spam'</span><span style="color: #339933;">,</span>            <span style="color: #3366CC;">'#4040FF'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span> <span style="color: #CC0000;">5</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">20</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">40</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">52</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">68</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">70</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">70</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">60</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Innocent'</span><span style="color: #339933;">,</span>        <span style="color: #3366CC;">'#8080FF'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span> <span style="color: #CC0000;">8</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">7</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">12</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">20</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">24</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">16</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">36</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">28</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">28</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">45</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Missed Spam'</span><span style="color: #339933;">,</span>     <span style="color: #3366CC;">'#A5A5FF'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span> <span style="color: #CC0000;">8</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">7</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">12</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">20</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">24</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">16</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">36</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">36</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">18</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">5</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">add</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'False Positives'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'#DEDEFF'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">2</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">3</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">2</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">1</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">4</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">18</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">12</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">8</span><span style="color: #339933;">,</span>  <span style="color: #CC0000;">7</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
c.<span style="color: #660066;">draw</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>A primeira linha do script carrega os <em>ExplorerCanvas</em>, sendo necessária para compatibilidade com MSIE, as cinco linhas subseqüentes criam o objeto canvas (importante especificar o id utilizado no div), definem o tipo de gráfico, a densidade da grade do gráfico, a distância vertical, e os rótulos horizontais do gráfico, respectivamente. As linhas a seguir definem as cores e valores de cada linha do gráfico, e a legenda, e o método draw(), finalmente exibe o gráfico.</p>
<p>O resultado, é como exibido na imagem abaixo (lembrando que o resultado real não é uma imagem &lt;img&gt;, mas um elemento &lt;canvas&gt;:</p>
<p style="text-align: center"><img src="http://blog.diovani.com/wp-content/uploads/2008/06/chartwidget.jpg" alt="Exemplo de gráfico gerado com o Chart Widget" /></p>
<p><em>Fonte: <a href="http://webfx.eae.net/dhtml/chart/usage.html">http://webfx.eae.net/dhtml/chart/usage.html</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/06/12/graficos-dinamicos-com-javascript-e-canvas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

