DScience:3D representation of data
30% complete | ||
|
3D plots use 3D computer graphics to represent scientific data. Data are usually defined as [math]\displaystyle{ Z=f(X,Y) }[/math], where [math]\displaystyle{ (X,Y,Z) }[/math] values by a function or actual data.
There are a number of possible types of 3D plots. You can use the following Java classes to plot data in 3D:
jhplot.HPlot3D,
jhplot.HPlotXYZ,
jhplot.HPlot3DP,
jhplot.HVisAd,
jhplot.HPlotMX. See additional details in DMelt:Plots/5_Plots_in_3D.
Bar plots or histograms
A bar plot draws a three-dimensional bar chart, where each element in Z corresponds to one bar.
To make such plots from a 3D histogram use the Java class jhplot.H2D. Here is the Python code with an example:
from jhplot import HPlot3D,SHPlot3D,H2D from java.util import Random # build a standard canvas c1 = HPlot3D("Canvas",600,400) # build a singleton # c1=SHPlot3D.getCanvas() c1.setGTitle("Global title") c1.setNameX("Xaxis") c1.setNameY("Yaxis") c1.visible(1) h1 = H2D("My 2D Test",20,-3.0, 3.0, 20, -3.0, 3.0) rand = Random(); for i in range(500): h1.fill(rand.nextGaussian(),rand.nextGaussian()) c1.draw(h1); # export to some image (png,eps,pdf,jpeg...) # c1.export(Editor.DocMasterName()+".png")
Surface plots
Here is an example of surface plots:
from jhplot import * from java.awt import Color from java.util import Random c1=HPlotXYZ("test",600,400) c1.setGTitle("3D function") c1.visible() c1.setTickDecimalAll(1) hh=H2D("Histogram",20,-2,2,20,-20,20) rand = Random() for i in range(10000): hh.fill(rand.nextGaussian(),5*rand.nextGaussian()) c1.setLegendBar() c1.addAsSurface(hh) c1.animate() c1.update()
Scattered data
Here is an example that use two data points (blue and red):
from jhplot import * from java.util import Random from java.awt import Color c1 = HPlot3D("Canvas",500,500) c1.setGTitle("Interactive 3D galaxy") c1.setRange(-10,10,-10,10,-10,10) c1.setNameX("X") c1.setNameY("Y") c1.visible(1) # create P2D objects in 3D p1= P2D("Galaxy") p1.setSymbolSize(2); p1.setSymbolColor(Color.blue); rand = Random() for i in range(5000): x=3*rand.nextGaussian() y=3*rand.nextGaussian() z=0.4*rand.nextGaussian() p1.add(x,y,z) c1.draw(p1) h2=P2D("Core") h2.setSymbolSize(2) h2.setSymbolColor(Color.yellow) for i in range(5000): x=0.9*rand.nextGaussian() y=0.9*rand.nextGaussian() z=0.8*rand.nextGaussian() h2.add(x,y,z) c1.draw(h2)
Mixed plots
One can overlay scattered data with surface plots, bar plots in arbitrary way. Typically, you need to use jhplot.HPlot3D canvas.
Example code
![]() | Learn about different types of 3D plots in Plots3D and histograms. |