java - Using jfreechart, how would I change the color and style of the series -
i'm beginner programmer. project school. lot jfreechart implementation code not specific code, taken other tutorials.
import java.awt.basicstroke; import java.awt.color; import org.jfree.chart.chartfactory; import org.jfree.chart.chartframe; import org.jfree.chart.chartpanel; import org.jfree.chart.jfreechart; import org.jfree.chart.axis.numberaxis; import org.jfree.chart.plot.plotorientation; import org.jfree.chart.plot.xyplot; import org.jfree.chart.renderer.xy.xylineandshaperenderer; import org.jfree.data.xy.xydataset; import org.jfree.data.xy.xyseries; import org.jfree.data.xy.xyseriescollection; import org.jfree.ui.applicationframe; import org.jfree.ui.refineryutilities; import java.util.arraylist; /** * resource class */ public class interest { /** * instance variables */ private double interestrate; //the rate of interest earned private int time; //how many of 1 unit of time measurement -- generally, in terms of years private int rate; //how many times during 1 unit of time interest compound private double investment; //the amount of money that's being invested private final double inflation = .025; //the rate of nominal value of increases /** * default constructor * default values */ public interest() { time = 6; rate = 1; investment = 2000.00; interestrate = 2; } /** * 4-argument constructor * @param * @param ir * @param t * @param r */ public interest(double i, double ir, int t, int r) { investment = i; time = t; rate =r; interestrate = ir; } /** * class methods * @param time */ public void settime(int time) //sets time instance variable in resource class { this.time = time; } public void setrate(int rate) //sets rate instance variable in resource class { this.rate = rate; } public void setinterestrate(double interestrate) //sets interest rate instance variable in resource class { this.interestrate = interestrate; } public void setinvestment(double investment) //sets investment instance variable in resource class { this.investment = investment; } public int gettime() //gets time instance variable in resource class { return time; } public double getinvestment() //gets investment instance variable in resource class { return investment; } public int getrate() //gets rate instance variable in resource class { return rate; } public double getinterestrate() //gets interest rate instance variable in resource class { return interestrate; } public double cumulativeinvestmentvalue() //calculates value of investment on period of time { double decimalinterest = (double)(interestrate/100.00); return investment * (math.pow(((decimalinterest/rate) + 1), (time * rate))); } public string getequation() //returns equation of function { return "" + investment + "(1 + " + interestrate/100 + "/" + rate + ")^(x * " + rate + ")"; } public double getderivative(double x) //calculates slope of tangent line @ given point { int t = time; double r = rate; double = investment; double ir = interestrate; double decimalinterestrate = ir/100; return * (r * (math.pow((1 + decimalinterestrate/r), x * r)) * ((math.log(1 + (decimalinterestrate/r))))); //this formula find derivative of exponential function } public void cumulativeprogressiveinterestvalue() //prints table of investment, showing value of on time { int iteration = 0; double realsum = investment; int t = time; int r = rate; double = investment; double ir = interestrate; double decimalinterestrate = ir/100; interest temp = new interest(i, ir, t, r); arraylist<integer> time = new arraylist<integer>(); arraylist<double> derivative = new arraylist<double>(); arraylist<double> nominalinterestsum = new arraylist<double>(); arraylist<double> realinterestsum = new arraylist<double>(); for(int x = 0; x <= t; x++) { time.add(iteration); iteration++; derivative.add(temp.getderivative(x)); nominalinterestsum.add(i * (math.pow(((decimalinterestrate/r) + 1), (x * r)))); realinterestsum.add((((math.pow(((decimalinterestrate/r) + 1), (x * r)))/((math.pow(((inflation) + 1), (x))))) * i)); //realinterestsum.add(i * (math.pow((((decimalinterestrate - inflation)/r) + 1), (x * r)))); } system.out.println("interestrate: " + ir + "\nrate: " + r + "\ninvestment: " + + "\ntime: " + t); system.out.format("%-15s%-20s%-28s%-29s\n", "time", "d/dx(slope)", "nominal sum accumulation", " real sum accumulation"); for(int x = 0; x <= t; x++) { system.out.format("%-15d%-20f%-29f%-29f\n", time.get(x), derivative.get(x), nominalinterestsum.get(x), realinterestsum.get(x)); } } private xydataset createdataset() { final xyseries series1 = new xyseries("investment function"); final xyseries series2 = new xyseries("real investment function"); final xyseries series3 = new xyseries("derivative function"); int iteration = 0; double realsum = investment; int t = time; int r = rate; double = investment; double ir = interestrate; double decimalinterestrate = ir/100; interest temp = new interest(i, ir, t, r); arraylist<integer> time = new arraylist<integer>(); arraylist<double> derivative = new arraylist<double>(); arraylist<double> nominalinterestsum = new arraylist<double>(); arraylist<double> realinterestsum = new arraylist<double>(); for(int x = 0; x <= t; x++) { time.add(iteration); iteration++; derivative.add(temp.getderivative(x)); nominalinterestsum.add(i * (math.pow(((decimalinterestrate/r) + 1), (x * r)))); realinterestsum.add((((math.pow(((decimalinterestrate/r) + 1), (x * r)))/((math.pow(((inflation) + 1), (x))))) * i)); //realinterestsum.add(i * (math.pow((((decimalinterestrate - inflation)/r) + 1), (x * r)))); } for(int x = 0; x <= t; x++) { series1.add(time.get(x), nominalinterestsum.get(x)); series2.add(time.get(x), realinterestsum.get(x)); series3.add(time.get(x), derivative.get(x)); } xyseriescollection dataset = new xyseriescollection(); dataset.addseries(series1); dataset.addseries(series2); dataset.addseries(series3); return dataset; } private jfreechart createchart(final xydataset dataset) { final jfreechart chart = chartfactory.createxylinechart("interest investment", "time", "money", dataset, plotorientation.vertical, true, true, false); chart.setbackgroundpaint(color.white); xyplot plot = chart.getxyplot(); plot.setbackgroundpaint(color.lightgray); plot.setdomaingridlinepaint(color.white); plot.setrangegridlinepaint(color.white); xylineandshaperenderer renderer = new xylineandshaperenderer(); renderer.setserieslinesvisible(0, false); renderer.setseriesshapesvisible(1, false); renderer.setseriesstroke(0, new basicstroke(4)); /*renderer.setserieslinesvisible(0, true); renderer.setseriesshapesvisible(0, false); renderer.setserieslinesvisible(1, false); renderer.setseriesshapesvisible(1, true);*/ plot.setrenderer(renderer); numberaxis rangeaxis = (numberaxis) plot.getrangeaxis(); rangeaxis.setstandardtickunits(numberaxis.createintegertickunits()); return chart; } public void displaychart(final string title) { final xydataset dataset = createdataset(); final jfreechart chart = createchart(dataset); final chartpanel chartpanel = new chartpanel(chart); chartpanel.setpreferredsize(new java.awt.dimension(500, 270)); chartframe frame = new chartframe(title, chart); frame.pack(); frame.setvisible(true); } }
how change style , coloring of lines being graphed. right now, there default line coloring , style. there way alter default.
how change style , coloring of lines being graphed.
you can change how each series rendered through xylineandshaperenderer (for instance 1 created in createchart
method). example, change rendering of first series (index 0):
renderer.setseriespaint(0,color.cyan);//change rendered color cyan renderer.setserieslinesvisible(0, false);//no lines between points renderer.setseriesstroke(0, new basicstroke(4));//the thickness of lines being rendered
see api of link provided more ways customize how each series rendered.
Comments
Post a Comment