Search in sources :

Example 1 with AbstractXYDataset

use of org.jfree.data.xy.AbstractXYDataset in project jgnash by ccavanaugh.

the class SecurityHighLowChart method updateChart.

private void updateChart() {
    try {
        SecurityNode sNode = combo.getSelectedSecurityNode();
        if (sNode != null) {
            final AbstractXYDataset dataSet = createHighLowDataSet(sNode);
            JFreeChart chart = createHighLowChart(sNode.getDescription(), rb.getString("Column.Date"), rb.getString("Column.Price"), dataSet, false);
            chart.setBackgroundPaint(null);
            chartPanel.setChart(chart);
            chartPanel.validate();
        }
    } catch (Exception ex) {
        Logger.getAnonymousLogger().severe(ex.toString());
    }
}
Also used : AbstractXYDataset(org.jfree.data.xy.AbstractXYDataset) SecurityNode(jgnash.engine.SecurityNode) JFreeChart(org.jfree.chart.JFreeChart)

Example 2 with AbstractXYDataset

use of org.jfree.data.xy.AbstractXYDataset in project jgnash by ccavanaugh.

the class SecuritiesHistoryDialog method createChart.

private static JFreeChart createChart(final SecurityNode node) {
    Objects.requireNonNull(node);
    final List<SecurityHistoryNode> hNodes = node.getHistoryNodes();
    final Date max = DateUtils.asDate(hNodes.get(hNodes.size() - 1).getLocalDate());
    final Date min = DateUtils.asDate(hNodes.get(0).getLocalDate());
    final DateAxis timeAxis = new DateAxis(null);
    timeAxis.setVisible(false);
    timeAxis.setAutoRange(false);
    timeAxis.setRange(min, max);
    final NumberAxis valueAxis = new NumberAxis(null);
    valueAxis.setAutoRangeIncludesZero(false);
    valueAxis.setVisible(false);
    final XYAreaRenderer renderer = new XYAreaRenderer();
    renderer.setBaseToolTipGenerator(new SecurityItemLabelGenerator(node));
    renderer.setOutline(true);
    renderer.setSeriesPaint(0, new Color(225, 247, 223));
    final XYPlot plot = new XYPlot(null, timeAxis, valueAxis, renderer);
    final List<List<SecurityHistoryNode>> groups = node.getHistoryNodeGroupsBySplits();
    for (int i = 0; i < groups.size(); i++) {
        int size = groups.get(i).size();
        Date[] date = new Date[size];
        double[] high = new double[size];
        double[] low = new double[size];
        double[] open = new double[size];
        double[] close = new double[size];
        double[] volume = new double[size];
        for (int j = 0; j < size; j++) {
            final SecurityHistoryNode hNode = groups.get(i).get(j);
            date[j] = DateUtils.asDate(hNode.getLocalDate());
            high[j] = hNode.getAdjustedHigh().doubleValue();
            low[j] = hNode.getAdjustedLow().doubleValue();
            open[j] = hNode.getAdjustedPrice().doubleValue();
            close[j] = hNode.getAdjustedPrice().doubleValue();
            volume[j] = hNode.getVolume();
        }
        final AbstractXYDataset data = new DefaultHighLowDataset(node.getDescription() + i, date, high, low, open, close, volume);
        plot.setDataset(i, data);
    }
    plot.setInsets(new RectangleInsets(1, 1, 1, 1));
    final JFreeChart chart = new JFreeChart(null, JFreeChart.DEFAULT_TITLE_FONT, plot, false);
    chart.setBackgroundPaint(null);
    return chart;
}
Also used : DateAxis(org.jfree.chart.axis.DateAxis) NumberAxis(org.jfree.chart.axis.NumberAxis) AbstractXYDataset(org.jfree.data.xy.AbstractXYDataset) DefaultHighLowDataset(org.jfree.data.xy.DefaultHighLowDataset) Color(java.awt.Color) Date(java.util.Date) LocalDate(java.time.LocalDate) JFreeChart(org.jfree.chart.JFreeChart) XYAreaRenderer(org.jfree.chart.renderer.xy.XYAreaRenderer) XYPlot(org.jfree.chart.plot.XYPlot) RectangleInsets(org.jfree.ui.RectangleInsets) SecurityHistoryNode(jgnash.engine.SecurityHistoryNode) List(java.util.List)

Aggregations

JFreeChart (org.jfree.chart.JFreeChart)2 AbstractXYDataset (org.jfree.data.xy.AbstractXYDataset)2 Color (java.awt.Color)1 LocalDate (java.time.LocalDate)1 Date (java.util.Date)1 List (java.util.List)1 SecurityHistoryNode (jgnash.engine.SecurityHistoryNode)1 SecurityNode (jgnash.engine.SecurityNode)1 DateAxis (org.jfree.chart.axis.DateAxis)1 NumberAxis (org.jfree.chart.axis.NumberAxis)1 XYPlot (org.jfree.chart.plot.XYPlot)1 XYAreaRenderer (org.jfree.chart.renderer.xy.XYAreaRenderer)1 DefaultHighLowDataset (org.jfree.data.xy.DefaultHighLowDataset)1 RectangleInsets (org.jfree.ui.RectangleInsets)1