Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jfreechart,我将如何更改系列的颜色和样式_Java_Graphics_Jfreechart - Fatal编程技术网

Java 使用jfreechart,我将如何更改系列的颜色和样式

Java 使用jfreechart,我将如何更改系列的颜色和样式,java,graphics,jfreechart,Java,Graphics,Jfreechart,我是一个初学者程序员。这是我在学校的项目。很多jfreechart实现代码不是我的特定代码,但它是由其他教程编写的 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.JFreeChar

我是一个初学者程序员。这是我在学校的项目。很多jfreechart实现代码不是我的特定代码,但它是由其他教程编写的

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 one unit of time measurement -- generally, this is in terms of years
private int rate; //How many times during one unit of time will the interest compound 
private double investment; //The amount of money that's being invested
private final double inflation = .025; //The rate of which nominal value of increases by


/**
 * Default constructor
 * Default values
 */
public Interest() 
{
    time = 6;
    rate = 1;
    investment = 2000.00;
    interestRate = 2;
}

/**
 * 4-argument constructor
 * @param i
 * @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 the time instance variable in the resource class
{
    this.time = time;
}

public void setRate(int rate) //Sets the rate instance variable in the resource class
{
    this.rate = rate;
}

public void setInterestRate(double interestRate) //Sets the interest rate instance variable in the resource class
{
    this.interestRate = interestRate;
}

public void setInvestment(double investment) //Sets the investment instance variable in the resource class
{
    this.investment = investment;
}

public int getTime() //Gets the time instance variable in the resource class
{
    return time;
}

public double getInvestment() //Gets the investment instance variable in the resource class
{
    return investment;  
}

public int getRate() //Gets the rate instance variable in the resource class
{
    return rate;
}

public double getInterestRate() //Gets the interest rate instance variable in the resource class
{
    return interestRate;
}

public double cumulativeInvestmentValue() //Calculates the value of your investment over a certain period of time
{
    double decimalInterest = (double)(interestRate/100.00);
    return investment * (Math.pow(((decimalInterest/rate) + 1), (time * rate)));

}
public String getEquation() //Returns the equation of the function
{
    return "" + investment + "(1 + " + interestRate/100 + "/" + rate + ")^(x * " + rate + ")";
}

public double getDerivative(double x) //Calculates the slope of the tangent line at any given point
{
    int t = time;
    double r = rate;
    double i = investment;
    double ir = interestRate;
    double decimalInterestRate = ir/100;

    return  i * (r * (Math.pow((1 + decimalInterestRate/r), x * r)) * ((Math.log(1 + (decimalInterestRate/r))))); //This is the formula to find the derivative of any exponential function
}


public void cumulativeProgressiveInterestValue() //Prints a table of your investment, showing the value of it over time
{

    int iteration = 0;
    double realSum = investment;
    int t = time;
    int r = rate;
    double i = 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: " + i + "\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 i = 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);
}


}
import java.awt.BasicStroke;
导入java.awt.Color;
导入org.jfree.chart.ChartFactory;
导入org.jfree.chart.ChartFrame;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.axis.NumberAxis;
导入org.jfree.chart.plot.PlotOrientation;
导入org.jfree.chart.plot.XYPlot;
导入org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
导入org.jfree.data.xy.XYDataset;
导入org.jfree.data.xy.XYSeries;
导入org.jfree.data.xy.XYSeriesCollection;
导入org.jfree.ui.ApplicationFrame;
导入org.jfree.ui.RefineryUtilities;
导入java.util.ArrayList;
/**
*资源类
*/
公共阶级利益{
/**
*实例变量
*/
私人双重利率;//赚取的利率
private int time;//一个时间度量单位中有多少个单位——通常以年为单位
private int rate;//在一个单位的时间内,利息会复利多少次
私人双重投资;//投资的金额
私人最终双重通货膨胀=.025;//名义价值增加的比率
/**
*默认构造函数
*默认值
*/
公共利益()
{
时间=6;
比率=1;
投资=2000.00;
酯=2;
}
/**
*四参数构造函数
*@param i
*@param-ir
*@param t
*@param r
*/
公共利益(双i、双ir、整数t、整数r)
{
投资=i;
时间=t;
速率=r;
酯=ir;
}
/**
*类方法
*@param时间
*/
public void setTime(int time)//设置资源类中的时间实例变量
{
这个时间=时间;
}
public void setRate(int rate)//设置资源类中的rate实例变量
{
这个比率=比率;
}
public void setInterestRate(double interestRate)//设置资源类中的利率实例变量
{
this.interestRate=interestRate;
}
public void setInvestment(double investment)//设置资源类中的投资实例变量
{
这就是投资;
}
public int getTime()//获取资源类中的时间实例变量
{
返回时间;
}
public double getInvestment()//获取资源类中的投资实例变量
{
投资回报;
}
public int getRate()//获取资源类中的rate实例变量
{
回报率;
}
public double getInterestRate()//获取资源类中的利率实例变量
{
还本付息;
}
public double cumulativeInvestmentValue()//计算您在特定时间段内的投资价值
{
双精度小数点检验=(双精度)(利率/100.00);
投资回报*(数学功率(((小数点/比率)+1),(时间*比率));
}
公共字符串getEquation()//返回函数的表达式
{
回报“+投资+”(1+“+利率/100+”/“+利率+”)^(x*“+利率+”);
}
public double getDerivative(double x)//计算切线在任意给定点的斜率
{
int t=时间;
双r=速率;
双i=投资;
双ir=酯;
双分贝间隔=ir/100;
return i*(r*(Math.pow((1+decimalInterestRate/r),x*r))*((Math.log(1+(decimalInterestRate/r‘‘‘)’);//这是求任何指数函数导数的公式
}
public void cumulativeProgressiveInterestValue()//打印您的投资表,显示其随时间变化的价值
{
int迭代=0;
双倍实额=投资;
int t=时间;
int r=速率;
双i=投资;
双ir=酯;
双分贝间隔=ir/100;
利息临时=新利息(i、ir、t、r);
ArrayList时间=新建ArrayList();
ArrayList导数=新的ArrayList();
ArrayList NominalinterstSum=新的ArrayList();
ArrayList realInterestSum=新的ArrayList();
对于(int x=0;x
我将如何更改正在绘制的线条的样式和颜色

您可以通过更改每个系列的呈现方式(例如在
createChart
方法中创建的系列)。例如,要更改第一个系列(索引0)的呈现方式,请执行以下操作:


有关自定义每个系列的呈现方式的更多方法,请参阅链接的API。

谢谢。这确实帮助了我。我觉得自己有点愚蠢,因为我没有注意到这一点。
renderer.setSeriesPaint(0,Color.CYAN);//change rendered color to cyan
renderer.setSeriesLinesVisible(0, false);//no lines between points
renderer.setSeriesStroke(0, new BasicStroke(4));//the thickness of any lines being rendered