【问题标题】:No figure output in htmlwidgets in RR中的htmlwidgets中没有图形输出
【发布时间】:2016-02-11 22:24:34
【问题描述】:

我正在尝试构建一个简单的htmlwidget,它使用D3R 制作一个条形图。我已经用我的代码设置了一个 gitHub,并将一个带有必要命令的 markdown 文件放在一起,以便在创建小部件时重新创建我的工作流程。我不确定我是否有语法错误,或者只是我的流程有问题?

我问是因为虽然代码运行,但它不会在 RStudio 的查看器中生成输出图像。我希望也许有D3htmlwidgetsJavaScriptR 经验的人可以帮助我找出问题所在。任何见解总是不胜感激。

谢谢你, 内森

链接:https://github.com/ngfrey/d3BarGraph

更新:我有...

    1. 从 GitHub 安装了最新版本的 HTMLWidgets
      1. 修复了我的 D3 库不是真正的 JavaScript 文档的问题。好渔获及时组合
      2. 试图创建这个项目作为一个最小的例子,但是,我不知道如何进一步最小化我的 d3BarGraph JavaScript 文件。
      3. 感谢timingportfolio,我认为问题出在d3BarGraph.js 文件中。
      4. 具体来说,我如何将数据绑定到实例。在 HTMLWidgets.widget() 函数的 renderValue 部分中。
      5. 在 RStudio 的查看器面板中右键单击时,我看不到检查元素的选项。这是否意味着什么都不是 被退回?
      6. 我在下面发布了我怀疑的代码。
      7. 再次感谢大家抽出宝贵时间提供帮助

这是我的代码的 HTMLWidgets.widget 部分。

HTMLWidgets.widget({

  name: 'd3BarGraph',

  type: 'output',

  //renderOnNullValue: true,

  initialize: function(el, width, height) {

    var svg =  d3.select(el).append("svg");
    svg
    .attr("width", width)
    .attr("height", height);

    //create barD3 instance

    return barD3().width(width).height(height).svg(svg); //passing the svg obj & options to the barD3 function.

  },
    resize: function(el, width, height, instance) {

    //var svg = instance.svg;
    var svg = d3.select(el).select("svg");
    svg
    .attr('width', width)
    .attr('height', height);

    instance.width(width).height(height).svg(svg).resize();
  },

  renderValue: function(el, params, instance) {
   // instance.lastValue = params;

    var data = HTMLWidgets.dataframeToD3(params.data);

   instance=instance.svg(svg).data(data);

   //var data = [8,16,10,18,19,4,12,18,12,11,19,11,15,13,5];

   d3.select(el)
    .call(instance);

   //Time for the barD3 function
   return barD3().width(width).height(height).svg(svg);
  }



});

我还更新了我的 GitHub 项目。我很想听听人们的cmets。 最好的, NF

【问题讨论】:

  • 首先,您需要在此处以minimal, reproducible example 的形式发布您的代码。其次,尝试更新htmlwidgets。从 GitHub 而不是 CRAN 安装它为我解决了类似的问题。
  • 我会看一下,但是在 RStudio 查看器中右键单击 + 检查会显示开发人员工具,如果有错误会显示给您。此外,d3 代码是否在 htmlwidgets 之外工作?我假设你这样做是为了学习。如果没有,有很多方法可以使用 htmlwidgets 制作条形图。
  • 您的 d3 不是 javascript github.com/ngfrey/d3BarGraph/blob/master/inst/htmlwidgets/lib/…。它应该看起来像github.com/juba/scatterD3/blob/master/inst/htmlwidgets/lib/…。我会鼓励你在制作 htmlwidget 之前获得一些工作的 d3/javascript。
  • 我今天将使用 GitHub 上最新版本的 htmlWidgets 来解决这个问题。我一直在关注 juba 的示例,但是在尝试使该图形在 R 中工作之前,我将确保拥有一个有效的 javascript 函数。这是一个学习练习。 100%。之后,我将尝试在一个可重复性最低的示例中重新构建我的问题。感谢大家这么快回复我。完成必要的工作后,我将编辑我的问题。 --NF
  • 我已根据您的 cmets 更新了我的帖子。我仍然没有在查看器中获得图形输出。

标签: javascript r d3.js htmlwidgets


【解决方案1】:

我能够解决这个问题。我在 GitHub 上发布了一个工作版本。对我来说最大的帮助是远离项目的时间。我还使用了 jcheng5 的气泡示例中的更多“样板”类型代码。请参阅Working_Project 链接获取代码。

再次感谢大家分享您的想法和帮助。最佳,NF

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多