Как построить время в туманности Затмение? - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть некоторые данные о запасах, которые я импортировал из Excel в модель в туманности. У меня есть визуализации для работы графика, но у меня возникают проблемы с форматированием времени по оси X должным образом. Я попытался создать массив temp x с 1 точкой данных для каждого значения координат, и я успешно создал массив дат такой же длины. Мне кажется, я должен быть в состоянии сказать Nebula использовать мой массив дат для меток на оси x, но я не могу понять, какой параметр get оси x нужно изменить. Прямо сейчас, с включенным форматом даты, он начинается 1 октября 1969 года, а затем имеет немаркированные галочки до последнего, который также гласит 1 октября 1969 года (значение по умолчанию?). Вот мой код:

    //Data source
    List<Book> stocks = readBooksFromCSV("COVID_DJI.csv");
    for (Book b : stocks) {
        System.out.println(b);
    }

            //Create arrays that can hold output
            double[] opening;
            double[] closing;
            String[] time;
            int len = stocks.size();
            opening = new double[len];
            closing = new double[len];
            time = new String[len];
            int j = 0;
            for (Book x : stocks) {
                double o_value = x.getOpen();
                double c_value = x.getClose();
                String d_value = x.getDate();
                opening[j] = o_value;
                closing[j] = c_value;
                time[j] = d_value;
                j++;
            }

            Date[] dates = new Date[len];
            SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
            for(int i = 0; i < len; i++) {
                try {
                    dates[i] = df.parse(time[i]);
                }
                catch(ParseException e) {
                    System.out.println("Ooof...");
                }
            }

            //Create temp x array
            double[] temp;
            temp = new double[len];
            for (int i = 0; i < len; i++) {
                temp[i] = i;
            }

            //Shell window generation and lightweight system- omitted

    XYGraph xyGraph = new XYGraph();
    xyGraph.setTitle("DJIA PPS During COVID-19 Outbreak");

    //Set Axis Bounds
    double min = opening[0];
    for(int i = 0; i < len; i++) {
        if(opening[i] < min) {
            min = opening[i];
        }
    }
    double max = opening[0];
    for(int i = 0; i < len; i++) {
        if(opening[i] > max) {
            max = opening[i];
        }
    }
    double drop = ((max - min)/max) * 100;
    System.out.println("Peak to trough drop: " + drop + "%");

    //Set axis parameters **I think this is where I need to change a parameter
    xyGraph.getPrimaryXAxis().setRange(0, len);
    xyGraph.getPrimaryXAxis().setDateEnabled(true);
    xyGraph.getPrimaryXAxis().setTimeUnit(Calendar.DATE);
    xyGraph.getPrimaryXAxis().setFormatPattern("yyyy-MM-dd");
    xyGraph.getPrimaryXAxis().setMajorGridStep(7);
    xyGraph.getPrimaryYAxis().setRange(min-100,max+100);
    xyGraph.getPrimaryYAxis().setFormatPattern("$00000.00");
    xyGraph.getPrimaryXAxis().setTitle("Day");
    xyGraph.getPrimaryYAxis().setTitle("Price Per Share");

    //Plot graph
    lws.setContents(xyGraph);

    //Trace implementation- omitted
...