在闪亮的应用程序中单击nvd3图表的事件(作为自定义输出绑定)
click event for nvd3 chart (as a custom output binding) in a shiny application
编辑:
解决问题:.useInteractiveGuideline(true)
改为.useInteractiveGuideline(false)
原件:
我试图使用NVD3折线图修改自定义输出绑定示例,并在NVD3图表上附加一个点击事件侦听器。我修改了linechart-bindings.js
文件,如下所示。唯一的修改是这部分代码(整个文件也被复制到下面,所以你可以看到我在那里添加了代码片段(:
chart.lines.dispatch.on("elementClick", function( e ) {
console.log(e);
});
该应用程序启动时没有问题,但当我单击图表时,没有控制台日志打印输出。可能我的方法过于简单化了,缺少了一些明显的部分。知道怎么解决这个问题吗?
完整的linechar-bindings.js
文件:
// Put code in an Immediately Invoked Function Expression (IIFE).
// This isn't strictly necessary, but it's good JavaScript hygiene.
(function() {
// See http://rstudio.github.io/shiny/tutorial/#building-outputs for
// more information on creating output bindings.
// First create a generic output binding instance, then overwrite
// specific methods whose behavior we want to change.
var binding = new Shiny.OutputBinding();
binding.find = function(scope) {
// For the given scope, return the set of elements that belong to
// this binding.
return $(scope).find(".nvd3-linechart");
};
binding.renderValue = function(el, data) {
// This function will be called every time we receive new output
// values for a line chart from Shiny. The "el" argument is the
// div for this particular chart.
var $el = $(el);
// The first time we render a value for a particular element, we
// need to initialize the nvd3 line chart and d3 selection. We'll
// store these on $el as a data value called "state".
if (!$el.data("state")) {
var chart = nv.models.lineChart()
.margin({left: 100})
.useInteractiveGuideline(true)
.transitionDuration(350)
.showLegend(true)
.showYAxis(true)
.showXAxis(true);
chart.xAxis //Chart x-axis settings
.axisLabel('Time (ms)')
.tickFormat(d3.format(',r'));
chart.yAxis //Chart y-axis settings
.axisLabel('Voltage (v)')
.tickFormat(d3.format('.02f'));
chart.lines.dispatch.on("elementClick", function( e ) {
console.log(e);
});
nv.utils.windowResize(chart.update);
var selection = d3.select(el).select("svg");
// Store the chart object on el so we can get it next time
$el.data("state", {
chart: chart,
selection: selection
});
}
// Now, the code that'll run every time a value is rendered...
// Retrieve the chart and selection we created earlier
var state = $el.data("state");
// Schedule some work with nvd3
nv.addGraph(function() {
// Update the chart
state.selection
.datum(data)
.transition(500)
.call(state.chart);
return state.chart;
});
};
// Tell Shiny about our new output binding
Shiny.outputBindings.register(binding, "shinyjsexamples.nvd3-linechart");
})();
不是解决方案,而是解决方法:.useInteractiveGuideline(true)
更改为.useInteractiveGuideline(false)
相关文章:
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- jQuery将地理补全输出到自定义字段
- 当我从有界数据派生输出时,为什么我的自定义指令不更新
- 为自定义 Javascript 处理器输出创建源映射
- Vue.js 使用 Vuex 和自定义组件,@click方法输出未定义
- 如何仅使用 JavaScript 的 stringify() 方法在第一级自定义 JSON 输出
- 在轨道中自定义javascript_include_tag输出
- 单选按钮的自定义iCheck设计可防止单击时输出总价
- Jquery/php 输出自定义错误消息
- 自定义jQuery序列化输出
- 如何将Yeoman输出的所有脚本、图像分组到自定义文件夹中
- 如何将自定义选项添加到ng选项输出中
- 在Babel下调用super()时,由于自定义错误,无法输出堆栈
- 自定义输出在闪亮
- 在闪亮的应用程序中单击nvd3图表的事件(作为自定义输出绑定)
- 谷歌地图-自定义JS输出信息窗口和标记问题
- 自定义javascript输出
- Jquery自定义字符串比较函数输出百分比
- 在JS输出中插入自定义文本