【问题标题】:Is there a limit for Scatter plots using JS?使用 JS 的散点图有限制吗?
【发布时间】:2012-08-01 16:06:47
【问题描述】:

我正在尝试提供一个用 JavaScript 编写的散点图,其中包含带有十进制值的二维。我从 MySQL 数据库中获取这些值,并使用 Php 将它们提供给图表。我的数据库有近 150000 个条目,对应于图中的 150000 对十进制输入。运行我的代码后,图表没有可视化。我从我的 Php 代码中获取了输出并将其粘贴到 JavaScript 代码中,它显示出了问题,但它没有说明什么(我正在使用 Dreamweaver)。如果我只为图表使用 3 对十进制输入,一切都会正常可视化。

我的问题是:您可以在散点图中显示多少个值有限制吗?

我现在正在使用 Highcharts 库中的散点图。我还尝试了 Google Chart Tools API 的散点图,但得到了相同的结果。

我的代码,在 JS 中使用 Php 提供图形是:

data: [<?php 
                for($j=0;$j<$i1;$j++)
                {
                    if($females[$j]['Hour']=="00")
                        $females[$j]['Hour']="0";
                    echo "[".$females[$j]['Hour'].".".$females[$j]['Min'].",".$females[$j]['Sent']."]";
                    if(($j+1)!=$i1)
                    {
                        echo ",";
                    }
                }

            ?>]}, 

有效的是:

 data: [[0.3,-0.1623],[0.4,-0.1840],[0.5,-0.1555]]},

谢谢。

【问题讨论】:

  • 你有很多情节点的问题吗?还是这只是一个理论问题?
  • 您的 HighChart 代码是什么样的?如果可以的话,jsFiddle 一个例子。
  • 是的,我有很多情节点的问题。例如。数据:[[0.0,-0.1239],[0.1,-0.1168],[0.2,-0.1263]] 这行得通,再添加一对点会导致错误:/(我对错误一无所知)

标签: php javascript html highcharts scatter-plot


【解决方案1】:

图表未呈现时我遇到了同样的问题,这是由于 turboThreshold 参数造成的。将其设置为高于您尝试渲染的点数。

请参阅http://api.highcharts.com/highstock#plotOptions.series.turboThreshold 了解更多信息。

【讨论】:

    【解决方案2】:

    您可以在散点图中显示多少个值有限制吗?

    当然:情节的大小。一旦你填满了整个区域,就不需要再画点了。只需减少要绘制的数据量,例如通过仅输出每五个值。您还可以使用一些算法来计算平均值并仅显示它们。

    接下来是动态绘图。尤其是在老客户上,绘制所有点的时间会更长。在服务器端绘制图表并将图像发送到客户端应该会更好,尤其是在图表不需要交互的情况下。

    此外,您会将整个数据集传送到客户端。存在带宽限制。你的文件有多少千兆字节?

    结论:150000点太多了。

    【讨论】:

    • 感谢您的回复并明确表示存在限制。我试图限制我的输入,但仍然出现错误:data: [[0.0,-0.5133],[0.1,-0.7452],[0.2,0.2066],[0.3,-0.8405],[0.4,-0.1709 ],[0.5,0.7085],[01.0,-0.8802],[01.1,-0.4241],[01.2,-0.8803],[21.3,0.0000],[21.4,-0.9483],[21.5,-0.7093],[ 22.0,-0.3569],[22.1,-0.2897],[22.2,0.6884],[22.3,0.0534],[22.4,-0.9698],[22.5,0.0051],[23.0,-0.7317],[23.1,0.0051] ,[23.2,-0.2395],[23.3,0.1927],[23.4,0.0051],[23.5,0.9610]]},
    • 你的数组文字后面有一个花括号。或者你得到哪个错误?
    • 是的,因为它像-> series:[{name:.., color:.., data:[..]}, {name:.., color:..,数据:[..]}]。我发现如果小数点像 00.something,这会导致错误。所以我将每个 00 转换为 0。现在数据完全正确,但无法使用 php 进行可视化。如果我将 php 代码的结果复制粘贴到 js 代码中,它就可以工作。但我仍然想动态输入输入..
    • 你可能会使用 PHP 的json_encode function 而不是一些自建的格式化程序。