Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou utilizando a classe JPGraph para a geração de gráficos, mas antes disto, estou alimentando as variáveis com seus valores para efetuar uns calculos para mostrar os resultados e também gerar o gráfico a partir dos valores das variáveis.
Estou tendo problema, pois quando eu coloco código de gerar o gráfico junto com o dos cálculos, ele dá um erro:
>
A imagem “http://localhost/economia/elasticidade.php” contém erros e não pode ser exibida.
Se eu retiro e deixo só a parte de gerar gráficos em um arquivo a parte, ele gera normalmente. Só que pra gerar o gráfico eu quero q ele preencha puxando os valores que são utilizados nos cálculos, que seriam as variáveis $p1, $p2, $q1, $q2.
Como eu faço pra mostrar o texto dos cálculos e o gráfico embaixo?
<?php
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_line.php');
require_once ('jpgraph/jpgraph_scatter.php');
require_once ('jpgraph/jpgraph_regstat.php');
$e = 0; // Elasticidade
$q1 = 9000; // Qtd Inicial
$q2 = 11000; // Qtd Final
$vq = 0; // Variação Quantidade
$p1 = 900; // Preço Inicial
$p2 = 1100; // Preço Final
$vp = 0; // Variação Preço
// Variação da Quantidade
$vq = round((100*$q2/$q1)-100, 4);
// Variação do Preço
$vp = round((100*$p2/$p1)-100, 4);
// Elasticidade
$ce = round(($vq/$vp), 4);
$e = round(($vq/$vp)*(-1), 4);
echo "Variação Quantidade: <b>$vq %</b> <br/>";
echo "Variação Preço: <b>$vp %</b> <br/>";
echo "Coeficiente (VQ/VP): <b>$ce</b> <br/>";
echo "Elasticidade: <b>$e</b> <br/>";
if($e<1){
echo "Tipo: <b>Inelástica</b>"; echo "Tipo: <b>Elástica</b>"; echo "Tipo: <b>Unitária</b>";
}
//GERAÇÃO DO GRÁFICO
// Original data points
$xdata = array($q1,$q2);
$ydata = array($p1,$p2);
// Get the interpolated values by creating
// a new Spline object.
$spline = new Spline($xdata,$ydata);
// For the new data set we want 40 points to
// get a smooth curve.
list($newx,$newy) = $spline->Get(50);
// Create the graph
$g = new Graph(300,200);
$g->SetMargin(40,20,20,30);
$g->title->Set("Elasticidade");
$g->title->SetFont(FF_ARIAL,FS_NORMAL,12);
$g->subtitle->Set('(Preço da Demanda)');
$g->subtitle->SetColor('darkred');
$g->SetMarginColor('lightblue');
//$g->img->SetAntiAliasing();
// We need a linlin scale since we provide both
// x and y coordinates for the data points.
$g->SetScale('linlin');
// We want 1 decimal for the X-label
$g->xaxis->SetLabelFormat('%1.1f');
// We use a scatterplot to illustrate the original
// contro points.
$splot = new ScatterPlot($ydata,$xdata);
//
$splot->mark->SetFillColor('red@0.3');
$splot->mark->SetColor('red@0.5');
// And a line plot to stroke the smooth curve we got
// from the original control points
$lplot = new LinePlot($newy,$newx);
$lplot->SetColor('navy');
// Add the plots to the graph and stroke
$g->Add($lplot);
$g->Add($splot);
$g->Stroke();
?>Sim William, mas é isso que estou precisando, que ele mostre o texto e também o gráfico logo abaixo, entende?
JpGraph fornece uma biblioteca imensa de exemplo de utilização. Pegue um dos templates dele e veja como funciona.
Vou repetir o que já disse no primeiro tópico:
Seria mais ou menos assim o resultado:
>
Variação Quantidade: 22.2222 %
Variação Preço: 22.2222 %
Coeficiente (VQ/VP): 1
Elasticidade: -1
Tipo: Inelástica
(GRÁFICO VEM AQUI NESTE ESPAÇO)
Creio que um dos problemas seja o cabeçalho do arquivo, pois quando eu boto só o código do gráfico, ele gera a imagem PNG, mas em um arquivo PHP mesmo.
Quando eu misturo o conteúdo, ele dá o erro.
cara, faça em arquivos diferentes.
outro_arquivo.php
Variação Quantidade: 22.2222 %
Variação Preço: 22.2222 %
Coeficiente (VQ/VP): 1
Elasticidade: -1
Tipo: Inelástica
<img src="arquivo_que_gera_o_grafico.php" alt="" />
E como eu iria passar os valores para a geração do gráfico?
Afinal esses valores serão preenchidos dinâmicamente, que seriam as variáveis $p1, $p2, $q1, $q2, que são utilizadas nos cálculos e no gráfico.
Esses valores serão preenchidos através de um formulário que será criado ainda.
Faça os calculos no arquivo do gráfico.. apenas não dê echo ou qualquer outro tipo de saida de dados no arquivo que gera o gráfico.
Mas se não me engano, dá para trabalhar com querystring também..
Mas entenda, eu PRECISO que seja daquela forma como eu mostrei logo acima, os cálculos e o texto, e logo abaixo o gráfico.
Entenda: não é possível gerar o gráfico corretamente se você tiver alguma saída de dados no mesmo arquivo.
E eu não aconselho, até pq acho que não daria resultado, tentar trabalhar controlando o fluxo de saida com algo como ob_flush e tal..
fazendo como mostrei em #6, você consegue deixar o texto e o cálculo logo acima do gráfico, e tudo funciona.]
Por que não tenta ao menos fazer da forma com que sugeri ?
o resultado final não será o mesmo?
>
texto com cálculos
gráfico
o problema até aqui, é que você está complicando além do necessário.
Qual o motivo, de você achar que precisa colocar texto no mesmo arquivo que gera o gráfico ?
Não estou falando do código-fonte em si, de colocar o texto e gráfico juntos, mas sim na exibição final.
Testei o que você falou e funcionou. Utilizei o método get pra passar os parâmetros pro outro arquivo.
RESULTADO FINAL
<?php
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_line.php');
require_once ('jpgraph/jpgraph_scatter.php');
require_once ('jpgraph/jpgraph_regstat.php');
$e = 0; // Elasticidade
$q1 = 9000; // Qtd Inicial
$q2 = 11000; // Qtd Final
$vq = 0; // Variação Quantidade
$p1 = 900; // Preço Inicial
$p2 = 1100; // Preço Final
$vp = 0; // Variação Preço
// Variação da Quantidade
$vq = round((100*$q2/$q1)-100, 4);
// Variação do Preço
$vp = round((100*$p2/$p1)-100, 4);
// Elasticidade
$ce = round(($vq/$vp), 4);
$e = round(($vq/$vp)*(-1), 4);
echo "Variação Quantidade: <b>$vq %</b> <br/>";
echo "Variação Preço: <b>$vp %</b> <br/>";
echo "Coeficiente (VQ/VP): <b>$ce</b> <br/>";
echo "Elasticidade: <b>$e</b> <br/>";
if($e<1){
echo "Tipo: <b>Inelástica</b>"; echo "Tipo: <b>Elástica</b>"; echo "Tipo: <b>Unitária</b>";
}
//GERAÇÃO DO GRÁFICO
echo "<br/><img src=\"grafico_elasticidade.php?p1=$p1&p2=$p2&q1=$q1&q2=$q2\" />"
?>
Acho que o problema da imagem conter erros, são os teus echos ali... estão se misturando com a imagem do gráfico, e por isso o erro.
Retire esses echo s, colocando eles num arquivo separado. E não no que gera a imagem.