- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试向 protovis 中的图表添加任意数量的垂直线。给定一个 x 截距值数组,我想遍历这个数组并为每个截距值画一条垂直线。现在,我可以画出固定数量的线条,但无法概括。
我做了一个 jsfiddle展示了我如何向图表添加固定数量的线,并在下面复制了该代码。在这里,我通过显式编码 x_value0
和 x_value1
添加了 2 行。在代码中,有两段相关的 protovis 代码,我分别标记为 Section A
和 Section B
。 Section A
是一个 protovis 函数,它定义了画线的位置,Section B
调用这些函数。
// X intercept values hard coded
var x_value0 = 30;
var x_value1 = 70;
new pvc.MetricDotChart({
canvas: "cccExample",
width: 500,
height: 400,
axisGrid: true,
axisZeroLine: false,
selectable: true,
extensionPoints: {
plot_add: function() {
var panel = new pv.Panel()
// Quadrant rules above grid, but below dots.
.zOrder(-1)
////
// Section A Begin
////
// Line 1
.def('l0', function() {
var ccc = this.getContext();
var scale = ccc.chart.axes.base.scale;
var li = ccc.panel._layoutInfo;
return li.paddings.left + scale(x_value0);
})
// Line 2
.def('l1', function() {
var ccc = this.getContext();
var scale = ccc.chart.axes.base.scale;
var li = ccc.panel._layoutInfo;
return li.paddings.left + scale(x_value1);
})
////
// Section A End
////
;
////
// Section B Begin
////
// Line 1
panel
.add(pv.Rule)
.top(0)
.left (function() { return this.parent.l0(); })
.height(function() { return this.parent.height(); })
.width(null)
;
// Line 2
panel
.add(pv.Rule)
.top(0)
.left (function() { return this.parent.l1(); })
.height(function() { return this.parent.height(); })
.width(null)
;
////
// Section B End
////
return panel;
}
}
})
.setData(testLDot2)
.render();
我想做的是将 xvalues
定义为一个数组,然后对其进行循环。我的尝试已经完成了一半。我做了一个second jsfiddle我尝试将 xvalues
移动到一个数组中。问题是我似乎无法成功地将相关部分包装在 for 循环中。来自那个 jsfiddle 的代码是:
// X intercept values in an array
var x_values = [30, 60];
new pvc.MetricDotChart({
canvas: "cccExample",
width: 500,
height: 400,
axisGrid: true,
axisZeroLine: false,
selectable: true,
extensionPoints: {
plot_add: function() {
var panel = new pv.Panel()
// Quadrant rules above grid, but below dots.
.zOrder(-1)
////
// Section A Begin - How can I put this inside of a loop?
////
// Line 1
.def('l0', function() {
var ccc = this.getContext();
var scale = ccc.chart.axes.base.scale;
var li = ccc.panel._layoutInfo;
return li.paddings.left + scale(x_values[0]);
})
// Line 2
.def('l1', function() {
var ccc = this.getContext();
var scale = ccc.chart.axes.base.scale;
var li = ccc.panel._layoutInfo;
return li.paddings.left + scale(x_values[1]);
})
////
// Section A End
////
;
////
// Section B Begin - I'm able to successfully loop this part
////
for (i = 0; i < x_values.length; i++) {
// The name of the .def function defined above
var fn_name = 'this.parent.l' + i + '()';
// Draw the lines
panel
.add(pv.Rule)
.top(0)
.left (function() { return eval(fn_name); })
.height(function() { return this.parent.height(); })
.width(null)
;
}
////
// Section B End
////
return panel;
}
}
})
.setData(testLDot2)
.render();
我可以将 Section B
包装在一个 for 循环中,我想对 Section A
做一些类似的事情:
for (i = 0; i < x_values.length; i++) {
.def('l'+i, function() {
var ccc = this.getContext();
var scale = ccc.chart.axes.base.scale;
var li = ccc.panel._layoutInfo;
return li.paddings.left + scale(x_values[i]);
})
}
或类似的东西。但问题是 protovis 似乎不允许我在这个 .def
block 周围放置任何代码。
我还尝试为 x_values
数组中的每个项目生成一个字符串,其中包含 Section A
函数的定义,然后在使用 eval()
的 protovis 代码,但到目前为止还没有奏效。
如有任何帮助,我们将不胜感激!
通过删除 Section A
并将该函数移动到 Section B
中,我似乎更接近我想要的东西。参见 my latest jsfiddle对于那个代码。以前,在 Section B
中,.left
行调用了 Section A
中定义的函数之一。相反,我将该函数的定义移到了 .left
代码行中,如下所示:
////
// Section B Begin
////
for (var i = 0; i < x_values.length; i++) {
var x = x_values[i];
// Lines
panel
.add(pv.Rule)
.top(0)
.left (function() {
var ccc = this.parent.getContext();
var scale = ccc.chart.axes.base.scale;
var li = ccc.panel._layoutInfo;
return li.paddings.left + scale(x);
})
.height(function() { return this.parent.height(); })
.width(null)
;
}
现在正在运行,但仍然不太正确:它只绘制了 x_values
数组中的最后一行并覆盖了之前的所有行。有什么想法吗?
最佳答案
用下面的代码替换你的循环
panel
.add(pv.Rule)
.data(x_values)
.top(0)
.left (
function(d) {
this.index * 20 + 15
var ccc = this.parent.getContext();
var scale = ccc.chart.axes.base.scale;
var li = ccc.panel._layoutInfo;
return li.paddings.left + scale(d);
})
.height(function() { return this.parent.height(); })
.width(null)
;
关于javascript - 在 protovis 图表上绘制任意数量的线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30634223/
我正在使用 Protovis Arc 布局,我想根据数据集中定义的“值”属性为节点之间的链接着色。我怎样才能访问它? 数据集定义如下:节点:...{nodeName:"书籍"}... 链接:...{源
我正在关注规模交互示例@http://mbostock.github.com/protovis/docs/invert.html我正在尝试绘制 2 条线系列图表。 我的JSON文件如下: var ps
根据提交历史,protovis 似乎自 2010 年 8 月以来就没有被触及过。该项目是否已被放弃? http://gitorious.org/protovis/protovis/commits/ma
我喜欢 http://vis.stanford.edu/protovis 的 protovis 库.我正在尝试使用它来创建树状图。 Protovis 的树形图布局中是否有一种方法可以指示要显示的最大级
我构建了一个类似于以下内容的图表:http://vis.stanford.edu/protovis/ex/antibiotics-burtin.html使用 svgweb 使其在 IE8 中运行。质量
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Lambda function syntax in JavaScript without curly bra
有人知道在哪里可以找到使用 Protovis 的基本帮助函数吗?我正在考虑用于绘制函数、xy 点、箱线图等的函数。我不需要大量的自定义,只需要绘制这些类型的图表的基本功能。 如果存在辅助函数,这将是一
我想在我的 Web 应用程序中使用 Jquery 工具提示显示数据。 我按照这个网站上的例子http://flowplayer.org/tools/demos/tooltip/index.html并成
我的目标 我正在尝试向 protovis 中的图表添加任意数量的垂直线。给定一个 x 截距值数组,我想遍历这个数组并为每个截距值画一条垂直线。现在,我可以画出固定数量的线条,但无法概括。 我做了什么
var vis = new pv.Panel().canvas('grphLangSpeakers').height(langCount*(barWidth+barGap)).width(canvas
有没有办法在缩放时获取面板的可见区域。我有一个力导向图,我有兴趣获得所有缩放事件后可见区域中的元素。有什么建议么?谢谢 最佳答案 您可以通过transform 参数访问面板的当前变换矩阵。所以,在下面
对于最简单的用例,一个值范围从 -10 到 10 的条形图,如何使用 Protovis JavaScript 图表库对此进行清晰的编码? 干净的意思是使轴居中,显示 x 和 y 轴标签,并表示图表的列
我无法弄清楚如何为 protovis 流图制作动画。我认为最好的方法是简单地将 i, j 索引数组传递给 .layers() 并让 .x() 和.y() 函数查找实际的更新值。有没有更简单的方法? 最
对于 Protovis 新手来说,这是一个相当艰巨的项目,但也许你可以帮我把它分成易于消化的 block ? 我想要构建的是一个“交互式面积图”,如下所示: 首先是数据...我在 Excel 中有各省
我使用 protovis 进行一些数据可视化,我非常喜欢它的 pv.Scale.linear(...).range(...) 功能,该功能可用于创建颜色将数值映射到颜色的比例。 Python 是否有类
我在我的图表上工作得很好。 mouseover 事件工作正常,但是当我添加一个 click 事件时,它没有按我的意愿执行 click 事件。 下面是我的代码: var vis = new pv.Pan
我正在评估 Protovis 和 Jqplot javascript 可视化工具包。我发现两者都很好。但我想知道他们在绘制大量数据点时的表现,比如 1,00,000 到 10,00,000。请分享您的
我正在尝试使用 protovis 可视化 flickr 数据集。我确实了解可视化部分,但是我对访问数据有疑问。我获得了一个可视化示例,它按以下方式访问数据: var data = pv.range(2
我正在考虑切换到 protovis 进行可视化。然而,有一件事让我持怀疑态度——因为 protovis 在浏览器中将其输出创建为一个 div,我想知道是否有任何至少半自动的方式让我一次创建一堆图像而不
TLDR:有没有人同时使用过 protovis 和 D3.js 来说明两者之间的区别? 过去 2 周我一直在使用 protovis,到目前为止效果非常好。除了现在我似乎在动画方面遇到了一些障碍。 原型
我是一名优秀的程序员,十分优秀!