在JFreeChart中创建Fatter烛台

时间:2015-09-18 01:40:34

标签: jfreechart candlestick-chart

我正在开发一个显示每日财务数据的应用,并选择使用JFreeChart。我能够学习如何创建烛台图表,但我的问题在于自定义。

你知道,我瞄准的目标更多的是

this

虽然到目前为止我能够管理的是

this

无论我放大多远,烛台的宽度都不会增加。

我相当肯定,薄薄的烛台在某种程度上与某个时间范围有关。我已经试图解决这个问题,但我不确定我做错了什么这里。

SSCE

    public void showStockHistory(OHLCDataset dataset, String stockName) {
    JFreeChart candleChart = ChartFactory.createCandlestickChart("History of " + stockName, "Date", "Stock Points", dataset, true);

    XYPlot plot = candleChart.getXYPlot();
        plot.setDomainPannable(true);
        plot.setRangePannable(true);

    ValueAxis domain = plot.getDomainAxis();
        domain.setAutoRange(true);

    NumberAxis range = (NumberAxis)plot.getRangeAxis();
        range.setUpperMargin(0.0D);
        range.setLowerMargin(0.0D);
        range.setAutoRange(true);
        range.setAutoRangeIncludesZero(false);

    ChartPanel chartPanel = new ChartPanel(candleChart);
        chartPanel.setMouseWheelEnabled(true);
        chartPanel.setMouseZoomable(true);

    getViewport().add(chartPanel);
    }

1 个答案:

答案 0 :(得分:1)

虽然我给出的示例似乎不必在上面第一张图片代码中的demo中进行不同的方法调用,但它只显示了薄烛台。我认为这是某种错误。

但是,我能够纠正这个问题如下:

  1. 获取图表的渲染器,

  2. 将其转换为CandlestickRenderer

  3. 类型
  4. 将其setAutoWidthMethod()方法设置为CandlestickRenderer.WIDTHMETHOD_SMALLEST

  5. 您就是这样做的:

    JFreeChart candleChart = ChartFactory.createCandlestickChart(
        "History of " + stockName, "Date", "Stock Points", dataset, true);
    XYPlot plot = candleChart.getXYPlot();
    CandlestickRenderer renderer = (CandlestickRenderer) plot.getRenderer();
    renderer.setAutoWidthMethod(CandlestickRenderer.WIDTHMETHOD_SMALLEST);