3

我正在寻找用于 Web 应用程序的 Scatter Plot 3D 组件。现在我正在使用JMathPlot(在 Java Applet 中)来生成如下内容:

替代文字 http://jmathtools.berlios.de/lib/exe/fetch.php?media=scatterplot3d.png

JMathPlot 很好,但缺少一些必需的功能(我对绘图点的工具提示特别感兴趣)。

有没有其他选择?任何交互式网络技术(javascript、java applet、flash、silverlight)都可以。将鼠标悬停在某个点上时,用户应该能够旋转/缩放绘图并查看工具提示。

4

6 回答 6

3

有几个简单的 3D 引擎用于 silverlight(例如http://www.markdawson.org/Kit3D/http://www.codeplex.com/aXelerateSL3D)和 flash(在此处列出),因为您知道 ActionScript, VB.NET 或 C# 应该很容易自己创建这样的图表。

版本 10 的 flash 甚至内置了一个简单的“3d 引擎”

Flash Player 10 允许在 x、y 和 z 轴上对 2D 表面进行 xyz 平移和 xyz 旋转。Flash Player 10 还会显示您设置的透视和摄像机角度,以创建类似 3D 的效果。

这可能就是您自己快速构建它所需的全部内容。

由于 JMathPlot 是开源的,因此根据您的需要采用它可能是另一种选择。

于 2009-09-19T22:43:06.247 回答
2

您可能还想查看Processing。他们可能没有现成的组件,但网络上有数以千计的优秀源代码示例。

于 2009-09-19T23:09:14.157 回答
2

James Black 建议使用 canvas 标签,是一个非常好的建议,但它需要一个非 IE 更新的浏览器。或者是吗?感谢 google,您将能够在 IE 中使用 Chrome 渲染器。通过这种方式,您可以使用动态图表定位支持 HTML5 的浏览器(Gecko、Webkit 和 Presto),并要求 IE 用户在 Google 的 Add on 发布后安装它。canvas由于对所有非 IE 的原生支持,以及谷歌的IE浏览画布插件,它可以跨浏览器工作。由于IE一些插件SVG,支持也可以跨浏览器使用。请注意,如果您需要适用于 IE 的 Chrome 渲染器,则不需要其他任何东西。

您可以使用canvassvg制作图表,并且已经有一些库可以这样做。这两种技术都允许您创建动态图,但它们有一些不同的方法。

SVG                                        画布
-------------------------------------------------- -----------------------------------------
具有场景 DOM(尽管是 SVG DOM)单个 HTML 元素,
                                           渲染脚本驱动
形状交易 像素交易
有点难以与 HTML(不是 XHTML)混合在两者中都表现得像图像
事件处理容易 事件处理困难

我想我会SVG去做你想做的事,因为向它添加动态标签会很简单,但是很难为伪 3D 散点图创建一个真正灵活的 API。

问题svg在于,通过尝试制作一种非常灵活的语言,您将拥有一种非常复杂的语言。在这里,您可以看到在两个库中编写的执行相同操作的代码。

SVG

var rect = document.createElementNS(SVG_NS, "rect");
rect.setAttribute("x", "5");
rect.setAttribute("y", "5");
rect.setAttribute("width", "20");
rect.setAttribute("height", "20");
rect.setAttribute("fill", "red");
parent.appendChild(rect);

var poly = document.createElementNS(SVG_NS, "polygon");
poly.setAttribute("fill", "green");
poly.setAttribute("points", "-40,40 0,-40, 40,40");
parent.appendChild(poly);

帆布

with (ctx) {
  fillStyle = "red";
  fillRect(5, 5, 20, 20);
}

with (ctx) {
  fillStyle = "green";
  beginPath();
  moveTo(-40, 40);
  moveTo(0, -40);
  moveTo(40, 40);
  closePath();
  fill();
}
于 2009-09-23T17:14:29.103 回答
1

嵌入式闪存对象

FlashAndMath 为这类事情提供了一些有趣的库:

http://www.flashandmath.com/advanced/contours/combo.html

于 2010-03-31T10:25:08.310 回答
0

您可以只使用 canvas 标签来执行此操作,对于除 IE 之外的任何更新的浏览器,您都可以获得工具提示,因为它与任何其他 html 标签一样具有事件。

您可以使用 excanvas 获得 IE 上的大部分功能,我只是没有运气绘制文本。

它不是一个库,但它可以为您提供仅在 html 和 javascript 中工作的能力。

于 2009-09-23T04:34:11.807 回答
0

canvasXpress 的 3d 散点图提供了 JavaScript 和 Canvas 替代方案。http://canvasxpress.org/scatter3d.html

于 2012-08-11T06:50:14.930 回答