原创

JFreeChart TimeSeries 刻度线显示数字而不是日期

温馨提示:
本文最后更新于 2024年04月12日,已超过 37 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

I want the following code to show the x-axis ticks as vertical dates, but its showing as large numbers, thanks!:

import java.text.SimpleDateFormat;
import java.util.List;

import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;

import com.thaggle.wealth.db.WealthDAO;
import com.thaggle.wealth.domain.YahooEarnings;

public class EarningsActualVsForecast extends AbstractChart {

    private static final long serialVersionUID = 7862225058366503917L;

    public EarningsActualVsForecast() throws Exception {
        super("Earnings: Actual vs Forecast", "DATE", "EPS");
    }
    
    protected XYDataset createDataset() throws Exception {
        String symbolOne = "MSFT";
        TimeSeries seriesEstimatedOne = new TimeSeries(symbolOne + ": Est.");
        TimeSeries seriesReportedOne = new TimeSeries(symbolOne + ": Rep.");
        List<YahooEarnings> msftEarnings = WealthDAO.getYahooEarnings(symbolOne);
        for(YahooEarnings earnings:msftEarnings) {
            System.out.println(symbolOne + "[" + earnings.getDate() + "]: Est = " + earnings.getEpsReported() + ", Act: " +  earnings.getEpsReported());
            seriesEstimatedOne.add(new Day(new SimpleDateFormat("yyyy-MM-dd").parse(earnings.getDate())), earnings.getEpsEstimate());
            seriesReportedOne.add(new Day(new SimpleDateFormat("yyyy-MM-dd").parse(earnings.getDate())), earnings.getEpsReported());
        }

        String symbolTwo = "AAPL";
        TimeSeries seriesEstimatedTwo = new TimeSeries(symbolTwo + ": Est.");
        TimeSeries seriesReportedTwo = new TimeSeries(symbolTwo + ": Rep.");
        List<YahooEarnings> vymEarnings = WealthDAO.getYahooEarnings(symbolTwo);
        for(YahooEarnings earnings:vymEarnings) {
            System.out.println(symbolTwo + ": Est = " + earnings.getEpsEstimate() + ", Act: " +  earnings.getEpsReported());
            seriesEstimatedTwo.add(new Day(new SimpleDateFormat("yyyy-MM-dd").parse(earnings.getDate())), earnings.getEpsEstimate());
            seriesReportedTwo.add(new Day(new SimpleDateFormat("yyyy-MM-dd").parse(earnings.getDate())), earnings.getEpsReported());
        }
        
        var dataset = new TimeSeriesCollection();
        dataset.addSeries(seriesEstimatedOne);
        dataset.addSeries(seriesReportedOne);
        dataset.addSeries(seriesEstimatedTwo);
        dataset.addSeries(seriesReportedTwo);

        return dataset;
    }

    public static void main(String[] args) throws Exception {
        EarningsActualVsForecast main = new EarningsActualVsForecast();
    }

The dates seem to be showing up as numbers even though I'm adding dates. Using a TimeSeries, but still showing up as large numbers.

The App JFrame

正文到此结束
热门推荐
本文目录