【问题标题】:Input data from csv doessnt work for jpgraph line plot来自 csv 的输入数据不适用于 jpgraph 线图
【发布时间】:2015-01-23 16:20:23
【问题描述】:

我尝试使用 jpgraph 生成线图。手动指定数组时效果很好。但是当我厌倦了从 csv 文件接收数据时,只生成了绘图,但没有显示数据线。我在输入和显示打印数组上的值时找不到任何错误,

print_r ($data[2]); printing displays Array ( [1] => 22.7625 [2] => 7.1984) 

搜索手册并没有解决我的问题。有人知道原因吗?

信息:这是我从 csv 文件中提取数据的方法,

$handle = fopen("/var/www/html/xx/yy/myfile.csv", "r");

$data[$i] = fgetcsv($handle, ",");

我删除了第一个元素,因为它是一个 ID。

unset($data[2] [0]);

编辑:

<?php
include ( "../jpgraph.php");
include ("../jpgraph_line.php");

$handle = fopen("/var/www/html/xx/yy/myfile.csv", "r");

for ($i=0;$i<=10;$i++)
{
    $data[$i] = fgetcsv($handle, ",");
    unset($data[2] [0]);
}    

$graph = new Graph(350, 250,"auto");    
$graph->SetScale( "textlin");

$lineplot =new LinePlot($data[2]);
$lineplot ->SetColor("blue");
$graph->Add( $lineplot);
$graph->Stroke();
?> 

【问题讨论】:

  • 那么手动数据和csv数据对比,有什么区别?
  • 数据集没有区别。如果我使用数据硬代码,如 $data = array(11,3, 8,12,5 ,1,9, 13,5,7);然后它工作。 @u_mulder
  • 你能多贴一些你的代码吗?$data[$i] 表明你有一个计数器在某种循环中工作。
  • 添加代码@BigScar
  • 你为什么在你的循环中使用 unset($data[2][0]) ?在某些情况下它不存在(循环的第一次迭代),而在其他情况下它已经完成。

标签: php jpgraph


【解决方案1】:

虽然我无法解释为什么, unset() 在这里不是你的朋友。

这是一个示例,它从 csv 文件中去除每行的第一个元素并绘制接下来的三个元素。它确实有效。感谢您向我介绍 JPGraph。

<?php
include "jpgraph.php";
include "jpgraph_line.php";
$handle = fopen("mike.csv", "r");
    for ($i=0;$i<=10;$i++)
    {
     $temp = fgetcsv($handle, ",");
     // $temp[0] is ignored
     $data[$i][0] = $temp[1];
     $data[$i][1] = $temp[2];
     $data[$i][2] = $temp[3];
    }    
$graph = new Graph(350, 250);    
$graph->SetScale( "textlin");
$lineplot =new LinePlot($data[2]);
$lineplot ->SetColor("blue");
$graph->Add( $lineplot);
$graph->Stroke();
?> 

【讨论】:

    猜你喜欢
    • 2013-05-07
    • 2020-07-09
    • 2021-12-10
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    相关资源
    最近更新 更多