在html div中显示phplot图

时间:2017-06-10 16:57:20

标签: php graph phplot

我使用phplot库来显示图表。我从他们的文档中挑选了一个例子并尝试了一些数据。它在简单的php页面上运行良好。

这是代码

$column_names = array(
                 'Beef', 'Fish', 'Pork', 'Chicken', 'Butter',
                                                         'Cheese',
                                                               'Ice Cream');
//                   |       |       |       |       |       |       |
$data = array(
    array('1910',   48.5,   11.2,   38.2,   11.0,   18.4,    3.9,    1.9),
    array('1930',   33.7,   10.2,   41.1,   11.1,   17.6,    4.7,    9.7),
    array('1950',   44.6,   11.9,   43.0,   14.3,   10.9,    7.7,   17.4),
    array('1970',   79.6,   11.7,   48.1,   27.4,    5.4,   11.4,   17.8),
    array('1990',   63.9,   14.9,   46.4,   42.4,    4.0,   24.6,   15.8),
);
$plot = new PHPlot(800, 500);
$plot->SetImageBorderType('plain'); // Improves presentation in the manual
$plot->SetTitle("U.S. Annual Per-Capita Consumption\n"
              . "of Selected Meat and Dairy Products");
$plot->SetLegend($column_names);
#  Move the legend to the lower right of the plot area:
$plot->SetLegendPixels(700, 300);
$plot->SetDataValues($data);
$plot->SetDataType('text-data-yx');
$plot->SetPlotType('stackedbars');
$plot->SetXTitle('Pounds Consumed Per Capita');
#  Show data value labels:
$plot->SetXDataLabelPos('plotstack');
#  Rotate data value labels to 90 degrees:
$plot->SetXDataLabelAngle(90);
#  Format the data value labels with 1 decimal place:
$plot->SetXDataLabelType('data', 1);
#  Specify a whole number for the X tick interval:
$plot->SetXTickIncrement(20);
#  Disable the Y tick marks:
$plot->SetYTickPos('none');
$plot->DrawGraph();

但是当我尝试应用一些html将它显示在固定位置时,我失败了。 显示它html我在编写上面的代码后编写了以下代码。

<html>
<head>
<title>PHPlot Example - Inline Image</title>
</head>
<body>
<h1>PHPlot Example - Inline Image</h1>
<div class="graph">
<img src="<?php echo $plot->EncodeImage();?>" alt="Plot Image">
</div>
</body>
</html> 

我的输出就像enter image description here

一样

请指导我,我做错了。谢谢:))

1 个答案:

答案 0 :(得分:1)

我通过暂时保存图形图像然后使用该临时图像显示内部图像标记哦html解决了我的问题。 这是代码

$plot->SetIsInline(True);
$plot->SetOutputFile("test.png"); 

图像保存为test.png。现在就像那样显示

<div class="graph">
<img src="test.png" alt="Plot Image">
</div>