rCharts HighCharts X 轴分组
rCharts HighCharts X-axs grouping
基本上我想用散点图来显示一个人用多少小时来执行一项任务。因此,Y 轴是时间(小时),X 轴是天(不规则数据集)。我的问题是,我可以进行 X 轴类别日分组以便正确填充数据(时间)吗?
Day Time Task
----------------------------
Mon 1.3 A
Mon 0.6 B
Tue 2.1 A
Wed 1.5 C
Fri 0.4 C
Sun 0.2 B
现在,我可以使用下面的代码绘制图表。假设 'dat' 是上述示例的数据框。
a <- hPlot(Time~ Day, data =dat, group= 'Task' ,type = "scatter", title = "Data chart" )
以上代码的输出能够对天的 X 轴进行分组,但时间数据不会跟随并且无法正确填充。它将显示周一=1.3、周二=0.6、周三=2.1 等...
然后我探索了另一种方法,通过系列下面的代码直接将参数传递给 highchart。
a$series(name = 'task plot', type = 'scatter', color= 'blue' ,data =??? )
这也可以使用 rcharts highchart 绘制散点图,但我不知道如何处理数据=???在 R 代码中,因此 highchart 会将如下数据放入 highchart,以确保正确填充时间数据的 X 轴分组。 x 值对应于根据 highchart 工作方式在轴中定义的类别数组。
xAxis: {
categories: ['Mon','Tue','Wed','Thu']
},
...
series: [{
type: 'scatter',
data: [
[0,1.3], // Mon 1.3
[0,0.6], // Mon 0.6
[1,2.1], // Tue 2.1
[2,1.5] // Wed 1.5
...
这个论坛好像活跃用户不多。 :)
在对上述两种方法的 rcharts 和 highcharts 的行为进行了进一步研究后,我设法解决了自己的问题。这是对所有有兴趣做同样事情的人的好处的方法。
如果您研究 highchart X 轴分组的行为,如果您为每个 X 分配一个值而不是字符串,它就会进行分组。因此,对于这两种方法,我都必须首先创建一个基于日的索引分组,这将作为我的绘图的 X 值。我使用 'match' 函数创建一个新列 'Index',如下所示对应于 Day.
Day Time Task Index
----------------------------
Mon 1.3 A 0
Mon 0.6 B 0
Tue 2.1 A 1
Wed 1.5 C 2
Fri 0.4 C 3
Sun 0.2 B 4
方法#1,在 hPlot 方法中,我必须使用 Index 作为我的 X 值,这样绘图将进行 X 轴分组并且 Y 值(时间)将正确填充。
a <- hPlot(Time~ Index, data =dat, group= 'Task' ,type = "scatter", title = "Data chart" )
绘图后,您将通过Index 值观察X 轴标签。然后,您可以使用下面的代码重新标记它们。我必须使用 unique,因为 Day 是一个不规则的数据集,并且如您所见重复了一天。
a$xAxis(categories=unique(dat$Day))
方法#2,通过使用R to highcharts我有了自己的新知识(可能我是新手)。我没有使用 $series,而是将其更改为使用 a$data,它可以将 x 和 y 值作为数据输入到绘图中。
a$data(name = 'task plot', type = 'scatter', x=dat$Index, y=dat$Time )
当然和方法#1 一样,需要使用唯一的 Day 重新标记 a$xAxis。
现在,我有两种方法都可以用于我想要的情节,而且效果非常好。
基本上我想用散点图来显示一个人用多少小时来执行一项任务。因此,Y 轴是时间(小时),X 轴是天(不规则数据集)。我的问题是,我可以进行 X 轴类别日分组以便正确填充数据(时间)吗?
Day Time Task
----------------------------
Mon 1.3 A
Mon 0.6 B
Tue 2.1 A
Wed 1.5 C
Fri 0.4 C
Sun 0.2 B
现在,我可以使用下面的代码绘制图表。假设 'dat' 是上述示例的数据框。
a <- hPlot(Time~ Day, data =dat, group= 'Task' ,type = "scatter", title = "Data chart" )
以上代码的输出能够对天的 X 轴进行分组,但时间数据不会跟随并且无法正确填充。它将显示周一=1.3、周二=0.6、周三=2.1 等...
然后我探索了另一种方法,通过系列下面的代码直接将参数传递给 highchart。
a$series(name = 'task plot', type = 'scatter', color= 'blue' ,data =??? )
这也可以使用 rcharts highchart 绘制散点图,但我不知道如何处理数据=???在 R 代码中,因此 highchart 会将如下数据放入 highchart,以确保正确填充时间数据的 X 轴分组。 x 值对应于根据 highchart 工作方式在轴中定义的类别数组。
xAxis: {
categories: ['Mon','Tue','Wed','Thu']
},
...
series: [{
type: 'scatter',
data: [
[0,1.3], // Mon 1.3
[0,0.6], // Mon 0.6
[1,2.1], // Tue 2.1
[2,1.5] // Wed 1.5
...
这个论坛好像活跃用户不多。 :)
在对上述两种方法的 rcharts 和 highcharts 的行为进行了进一步研究后,我设法解决了自己的问题。这是对所有有兴趣做同样事情的人的好处的方法。
如果您研究 highchart X 轴分组的行为,如果您为每个 X 分配一个值而不是字符串,它就会进行分组。因此,对于这两种方法,我都必须首先创建一个基于日的索引分组,这将作为我的绘图的 X 值。我使用 'match' 函数创建一个新列 'Index',如下所示对应于 Day.
Day Time Task Index
----------------------------
Mon 1.3 A 0
Mon 0.6 B 0
Tue 2.1 A 1
Wed 1.5 C 2
Fri 0.4 C 3
Sun 0.2 B 4
方法#1,在 hPlot 方法中,我必须使用 Index 作为我的 X 值,这样绘图将进行 X 轴分组并且 Y 值(时间)将正确填充。
a <- hPlot(Time~ Index, data =dat, group= 'Task' ,type = "scatter", title = "Data chart" )
绘图后,您将通过Index 值观察X 轴标签。然后,您可以使用下面的代码重新标记它们。我必须使用 unique,因为 Day 是一个不规则的数据集,并且如您所见重复了一天。
a$xAxis(categories=unique(dat$Day))
方法#2,通过使用R to highcharts我有了自己的新知识(可能我是新手)。我没有使用 $series,而是将其更改为使用 a$data,它可以将 x 和 y 值作为数据输入到绘图中。
a$data(name = 'task plot', type = 'scatter', x=dat$Index, y=dat$Time )
当然和方法#1 一样,需要使用唯一的 Day 重新标记 a$xAxis。
现在,我有两种方法都可以用于我想要的情节,而且效果非常好。