DMelt:Plots/7 Charts
Charts
A chart is a graphical representation of data. Charts can be shown as bars (in a bar chart), lines (in a line chart), slices (in a pie chart) etc. Read the Chart article.
In DataMelt, jhplot.HChart canvas is used for showing charts. container. This canvas is important since it is the main canvas for the Android
version of DataMelt and is based on JFreeChart. Here we will show a simple example based on Jython:
from java.awt import Color
from java.awt import Font
from java.util import Random
from math import *
from jhplot import HChart,P1D
from java.lang import *
# test print streams using java
System.out.println("Test of OK message")
System.err.println("Test of Error message")
c1 = HChart("Canvas",600,600, 1, 2)
c1.setGTitle("Chart examples")
c1.cd(1,1)
c1.visible()
c1.cd(1,1)
c1.setChartPie()
c1.setName("Pie example")
c1.valuePie("Hamburg",1.0)
c1.valuePie("London",2.0)
c1.valuePie("Paris",1.0)
c1.valuePie("Bern",1.0)
c1.update()
# new plot
c1.cd(1,2)
c1.setName("XY example")
c1.setNameX("weeks")
c1.setNameY("density")
p1= P1D("test 1")
p1.setColor(Color.red)
p2= P1D("test 2")
# fill
rand = Random()
for i in range(10):
x=4.0*i # x-value
p1.add(i*4, 10.0*rand.nextGaussian());
p2.add(i*2, 5.0*rand.nextGaussian());
c1.add(p1)
c1.add(p2)
c1.update()
c1.export("a.eps")
# export to some image (png,eps,pdf,jpeg...)
# c1.export(Editor.DocMasterName()+".png")
The output shows pie charts and XY data as shown below:
![]() |
Charts using jFreeChart
You can create plots using jFreeChart. One advantage of using jFreeChart is that it allows to build very custom plots (although less interactive than other canvases). When using with DataMelt, one can use the Dmelt methods for exporting JFreeChart images to EPS, PDF, SVG.0
Here is a small Jython/Python example that uses the jFreeChart API:
from org.jfree.chart import ChartFactory
from org.jfree.data.general import DefaultPieDataset
from jhplot import HPlotChart
piedataset =DefaultPieDataset()
piedataset.setValue("Apr", 10)
piedataset.setValue("May", 30)
piedataset.setValue("June", 40)
chart = ChartFactory.createPieChart("Pie Chart",piedataset,1,1,1)
c1 = HPlotChart( chart )
c1.visible()
To learn about "chart" object, type "help.doc(chart")". The output of this code is a high-quality image :
You can use jFreeChart for timeseries, charts, line plots, etc.