如何动态绘制表中的点?该表有两列专用于x和y坐标,另外一列用于持续时间 .
示例
说我有下面的表格 . Date和Effort列将组成折线图的x,y坐标(Timestamp,Effort) . 此折线图将具有基于Timestamp和Effort列的累计总数的数据点 . “持续时间”列将确定条目对折线图的数据点的影响时间 . 所以基于这个表,我想要一个折线图,其坐标列在Data-Points下面 .
Timestamp Effort Duration
4/13/2016 12:13:12.15 10 100
4/13/2016 12:13:12.80 12 100
2016年4月13日12:13:13.15 30 100
2016年4月13日12:13:13.80 50 100
Data-Points:
(2016年4月13日12:13:12.15,10)
(2016年4月13日12:13:12.80,22)
(2016年4月13日12:13:13.15,42)
(2016年4月13日12:13:13.80,80)
2 回答
其中一个Highcharts演示精确地展示了如何使用静态HTML表格完成此任务:http://www.highcharts.com/demo/column-parsed .
我根据您的要求使用您的样本数据创建了一个小提琴,并将其绘制为折线图:http://jsfiddle.net/brightmatrix/qgvkp0t0/
您的数据表的编码类似于以下内容:
然后,您将使用以下代码创建图表 . 请注意调用HTML表格ID的
data
属性:有一点需要注意:没有任何修改,您的时间戳数据将作为
datetime
类型读入您的x轴 . 这将为您留下那些日期或时间之间的空点 .在我的示例中,我明确地将x轴类型设置为
category
,因此每个数据点的图表上只有一个图 .现在,要使x轴标签以更易读的格式显示,可以浏览
xAxis.labels.formatter
属性(http://api.highcharts.com/highcharts#xAxis.labels.formatter)和Highcharts.dateFormat()
函数(http://api.highcharts.com/highcharts#Highcharts.dateFormat) .为了从HTML表中获取数据并在绘制图表之前使用它,我使用了
data.columns
属性(参见http://api.highcharts.com/highcharts#data.columns) .在声明图表选项之前,我编写了这段代码来浏览HTML表并将内容添加到数组中 .
然后我使用这些数组如下:
这种方式的工作方式是这些数组中预期的第一个项是系列名称,这就是为什么我在首次声明数组时将其作为默认值 .
现在,一旦您拥有数组中的数据,您将需要运行它们来计算累积总数并减去那些持续时间已经过去的数据 . 不幸的是,我在持续时间方面没有成功 . 这是我在小提琴中所写的内容:
我希望这能让你更接近你的解决方案 . 我很抱歉,我无法让这100%嘲笑你 .
我最终预处理了数据 . 首先,我将所有数据点累积到系列中 . 接下来,我使用durations更新了datetime x值 . 最后,我减去了x值小于累积数据点x值的每个y值 .