1

请我一直在尝试这个,但似乎很难。我试图使 y 轴的数量取决于用户选择。有3个部分供用户选择,即:

  1. 绘图的时间范围
  2. 要绘图的 ID,将从数据库中获取
  3. 在数据库中搜索的字段

如果用户选择 2 ID 和 2 Field,那么我应该在图上有 4 条不同的线。意思就是:

行数 = 选择的 ID 数 * 选择的字段数

有了这个,我知道我会得到相同的数字用于图例中的标签以及要显示的 y 轴的数量。

对于我给出的示例,它应该类似于:

  • 字段_1-ID_1
  • 字段_2-ID_1
  • 字段_1-ID_2
  • 字段_2-ID_2

用于生成图例标签和 y 轴,但这完全取决于用户的选择。

感谢您的关注。

4

1 回答 1

0

我终于找到了一种方法来解决这个问题,方法是从 php 端生成 jqplot 中系列属性的元素,以预期的格式,即

series:[{label:Field_1-ID_1,yaxis:'yaxis'},{label:Field_1-ID_2,yaxis:'y2axis'},{label:Field_2-ID_1,yaxis:'y3axis'},{label:Field_2-ID_2,yaxis:'y4axis'}]

如果有人对它的完成方式感兴趣,请检查以下代码:

$con = mysql_connect($hostname, $username, $password);
if (!$con)
{
 die('Could not connect: ' . mysql_error());
}

mysql_select_db($database, $con);

$unit = mysql_real_escape_string($_GET["units"]);//ID selected by user, e.g.(ID_1,ID_2)
$stat = mysql_real_escape_string($_GET["start"]);//start time
$stop = mysql_real_escape_string($_GET["stop"]);//stop time
$field1 = mysql_real_escape_string($_GET["fieldlist"]);//Field selected by user, e.g.(Field_1,Field_2)

$first=true;
echo "Label=";
echo "[";

$field = explode(",", $field1);
$count=count($field);
$i=0;$j=1;
while($i<$count)
{ 
  $sq="SELECT su_id FROM Station_stat
  WHERE su_id in ($unit) GROUP BY su_id";

  $res = mysql_query($sq);

  while($row = mysql_fetch_array($res)){
  if ($first != true )
    {
        echo ",";
        echo "{label:\"$field[$i] ".$row['su_id']."\",yaxis:\"y".++$j."axis\"}";
    }
  else
      echo "{label:\"$field[$i] ".$row['su_id']."\",yaxis:\"yaxis\"}";
      $first = false;
 }
++$i;
}
echo "];";

该php的输出如下:

Label=[{label:Field_1-ID_1,yaxis:'yaxis'},{label:Field_1-ID_2,yaxis:'y2axis'},{label:Field_2-ID_1,yaxis:'y3axis'},{label:Field_2-ID_2,yaxis:'y4axis'}];

然后在 jqplot 函数中,我将系列设置为标签:

series:Label
于 2013-01-24T14:33:22.277 回答