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

alt text http://jmathtools.berlios.de /lib/exe/fetch.php?media=scatterplot3d.png

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

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

有帮助吗?

解决方案

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

Flash 10版本甚至还有一个内置于简单的“3d引擎”中。

  

Flash Player 10允许xyz翻译   和xyz旋转的2D表面   x,y和z轴。 Flash Player 10也是   显示透视和相机   您设置的角度可以创建类似3D的角度   的效果。

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

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

其他提示

您可能还想查看处理。他们可能没有现成的组件,但网上有成千上万个好的源代码示例。

James Black的建议使用canvas标签,是一个非常好的,但它需要一个非IE更新浏览器。或者是吗?感谢谷歌,您将能够使用IE中的Chrome渲染器。通过这种方式,您可以使用动态图表定位支持HTML5的浏览器(Gecko,Webkit和Presto),并要求IE用户在其出现后安装Google的Add。由于非IE浏览器中的本机支持,以及Google的 Explore Canvas <, canvas 可跨浏览器工作/ a> IE的插件。 SVG 支持也可通过浏览器谢谢 一些插件 for IE 。请注意,如果您需要适用于IE的Chrome渲染器,则不需要任何其他内容。

你可以使用 canvas svg 来做图表已经有了一些图书馆这样做。两种技术允许您创建动态图,但它们有一些不同的方法。

SVG                                        canvas
-------------------------------------------------------------------------------
Has scene DOM (SVG DOM, though)            Single HTML element, 
                                           rendering script-driven
Deals in shapes                            Deals in pixels
Somewhat hard to mix with HTML (not XHTML) Behaves like an image in both
Event handling easy                        Event handling hard

我认为我会选择 SVG 来做你想要的事情,因为添加动态标签会很简单,但要创建一个真正灵活的将很难伪三维散点图的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();
}

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

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

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

你可以使用excanvas在IE上获得大部分功能,我只是没有运气绘图文字。

它不是一个库,但它可以让你使用javascript在html中工作。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top