在 rChart(dimple)散点图中添加线条

3

我想在预定义的纵坐标值上,为rCharts在dimple.js中创建的散点图添加水平线。

library(rCharts)

df <- data.frame(a  = rnorm(10), b = rnorm(10))

d1 <- dPlot(b~a,
            data = df,
            type = "bubble"
            )

d1

我尝试通过添加以下内容进行操作:
d1$layer(y= 0, copy_layer=T, type='line', color=list(const='red'))

但是这返回以下消息:

Error in envRefInferField(x, what, getClass(class(x)), selfEnv) : “layer”不是“Dimple”引用类的有效字段或方法名称

在图中有其他获得水平线的方法吗?

1个回答

4
非常好的问题,我很高兴你问了。这个功能将在这个拉取请求中添加。目前,您可以通过require(devtools); install_github("rCharts","timelyportfolio",ref="dimple_layer")进行测试。这里是重新制作的示例,几乎可以正常工作。另外,我添加了一些其他考虑因素。我仍在努力让rCharts中的dimple聚合正确工作。您将看到一个不太完美的解决方法。
library(rCharts)

df <- data.frame(id = 1:10, a  = rnorm(10), b = rnorm(10))

d1 <- dPlot(b~a,
            groups = "a",
            data = df,
            type = "bubble"
            ,defaultColors = "#!['blue']!#"
)
d1$xAxis(type="addMeasureAxis")
d1$yAxis(type="addMeasureAxis",overrideMin = -2, overrideMax = 2)

d1

d1$layer(
  y ~ x
  ,groups = c("x","y")
  ,data = data.frame(x = c(1,10), y = rep(0,2))
  ,type="line"
)
d1

目前,更好的处理方法可能是使用afterScript在顶部绘制一条线。正如您所看到的,这绝对是一个正在进行中的工作,并且过于不专业。

library(rCharts)

df <- data.frame(id = 1:10, a  = rnorm(10), b = rnorm(10))

d1 <- dPlot(b~a,
            groups = "a",
            data = df,
            type = "bubble"
            ,defaultColors = "#!['blue']!#"
)
d1$xAxis(type="addMeasureAxis")
d1$yAxis(type="addMeasureAxis",overrideMin = -2, overrideMax = 2)

d1

d1$setTemplate(
  afterScript = sprintf(
'
<script>
var line = d3.svg.line()
  .x(function(d) { return myChart.axes[0]._draw.scale()(d.x); })
  .y(function(d) { return myChart.axes[1]._draw.scale()(d.y); });

d3.select("#%s svg g")
  .append("path")
  .datum([{x:myChart.axes[0]._min,y:0},{x:myChart.axes[0]._max,y:0}])
  .attr("d",line)
  .style("stroke","blue")
  .style("stroke-width",3)
</script>
'
,d1$params$dom
))

d1

非常有用,谢谢!如果这条水平线是要替换水平轴的话,将限制设置为-2:2直接更好:.datum([{x:-2,y:0},{x:2,y:0}])。不确定“_max”指的是什么,但在我的设置中它停在了右手边轴的限制之前。 - PatrickT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接