“jpgraph”不起作用,html 中没有错误

Posted

技术标签:

【中文标题】“jpgraph”不起作用,html 中没有错误【英文标题】:The "jpgraph" not working, without errors in html 【发布时间】:2016-11-05 01:58:04 【问题描述】:

这是我的 php 代码:

require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_bar.php');

$data1y=array(47,80,40,116);
$data2y=array(61,30,82,105);
$data3y=array(115,50,70,93);


// Create the graph. These two calls are always required
$graph = new Graph(350,200,'auto');
$graph->SetScale("textlin");

$theme_class=new UniversalTheme;
$graph->SetTheme($theme_class);

$graph->yaxis->SetTickPositions(array(0,30,60,90,120,150), array(15,45,75,105,135));
$graph->SetBox(false);

$graph->ygrid->SetFill(false);
$graph->xaxis->SetTickLabels(array('A','B','C','D'));
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

// Create the bar plots
$b1plot = new BarPlot($data1y);
$b2plot = new BarPlot($data2y);
$b3plot = new BarPlot($data3y);

// Create the grouped bar plot
$gbplot = new GroupBarPlot(array($b1plot,$b2plot,$b3plot));
// ...and add it to the graPH
$graph->Add($gbplot);


$b1plot->SetColor("white");
$b1plot->SetFillColor("#cc1111");

$b2plot->SetColor("white");
$b2plot->SetFillColor("#11cccc");

$b3plot->SetColor("white");
$b3plot->SetFillColor("#1111cc");

$graph->title->Set("Bar Plots");

// Display the graph
$graph->Stroke();

参考:JpGraph Example - Chart

这是我的 html

屏幕上没有错误消息。浏览器的控制台也是空的。

可能出了什么问题?我需要设置什么吗?

我试过这个链接:jpgraph doesn't work,但没有成功。

【问题讨论】:

你试过检查错误日志吗?你确定命令的顺序吗?在文档中,它说要添加新的 BarPlot,然后是 setFillColor,完成后,使用新的 GroupBarPlot 并添加 刚刚尝试了您的代码,工作正常.. 也许您缺少一些依赖项?喜欢jpg-config.inc.php ? 嗨轻便摩托车。错误日志在哪里? jpg-config.inc.php 文件存在于文件夹中。 【参考方案1】:

确保您至少“安装”了 jpgraph,这是(至少)需要在您的 root 中的内容:

-chart.php
-jpgraph
  -fonts
    -FF_FONT0.gdf
    -FF_FONT0-Bold.gdf
    -FF_FONT1.gdf
    -FF_FONT1-Bold.gdf
    -FF_FONT2.gdf
    -FF_FONT2-Bold.gdf  
  -themes
    -UniversalTheme.class.php
  -gd_image.inc.php
  -imageSmoothArc.php
  -jpg-config.inc.php
  -jpgraph.php
  -jpgraph_bar.php
  -jpgraph_errhandler.inc.php
  -jpgraph_gradient.php
  -jpgraph_legend.inc.php
  -jpgraph_plotband.php
  -jpgraph_rgb.inc.php
  -jpgraph_text.inc.php
  -jpgraph_theme.inc.php
  -jpgraph_ttf.inc.php

还要确保启用GD library,如果无法访问文件系统,请在jpg-config 中关闭USE_CACHE

正如我在评论中所写,您的代码在默认安装下工作正常(意味着我刚刚提取了上面列出的文件,将您的代码添加到了根目录下的 chart.php,我得到了 4 个组中 3 个条的图像..

编辑:另外,检查他们的文档中的troubleshooting tips 和this SO topic,这也与您的问题有关

【讨论】:

GD 已启用。我需要在php.ini 中禁用output_buffering 是的,另外你可以设置display_errors = Onerror_reporting = E_ALL | E_STRICTUSE_CACHE只有在你不能访问文件系统的情况下才需要禁用,这里应该没有问题。首先禁用缓冲并启用错误显示。还要仔细检查文件中<?php 之前没有字符,?> 之后也没有字符。在php中,你不必在文件末尾包含?>,这样就可以省去一些像这样的麻烦.. 我设置了display_errors = Onerror_reporting = E_ALL | E_STRICT, USE_CACHE。错误信息:JpGraph Error: HTTP headers have already been sent. Caused by output from file chart.php at line 9. 您确定您的文件与您在此处发布的完全相同吗?因为它对我来说很好用,只需在您的代码上方添加<?php 是的,display_errorserror_reporting 已设置。 root 是正确的。还有其他设置吗?【参考方案2】:

在任何情况下你使用 Laravel,你都可以使用这个 https://github.com/HuasoFoundries/jpgraph(它不是 jpgraph 的官方作曲家包,因为他们 claim 但它很有用,例子也写在 repo 中)。

在测试时,我还得到了一个灰色的小盒子,而不是图表。

但添加 ob_end_clean(); (refer php.net doc, — 清理(擦除)输出缓冲区并关闭输出缓冲) 修复了它。而且我能够渲染图表。

输出:

【讨论】:

以上是关于“jpgraph”不起作用,html 中没有错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试显示从 Oracle 数据库中选择的数据时出现 JPGraph 轴错误

为啥没有 enctype 属性文件上传不起作用?

在没有语法错误的情况下,此代码中的 if 情况不起作用

添加产品表单不起作用,HTML 和 PHP

Mysql触发没有错误消息但代码不起作用

Jpgraph类库简介