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。

现在,我有两种方法都可以用于我想要的情节,而且效果非常好。