我正在开发一个显示每日财务数据的应用,并选择使用JFreeChart。我能够学习如何创建烛台图表,但我的问题在于自定义。
你知道,我瞄准的目标更多的是
虽然到目前为止我能够管理的是
无论我放大多远,烛台的宽度都不会增加。
我相当肯定,薄薄的烛台在某种程度上与某个时间范围有关。我已经试图解决这个问题,但我不确定我做错了什么这里。
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);
}
答案 0 :(得分:1)
虽然我给出的示例似乎不必在上面第一张图片代码中的demo中进行不同的方法调用,但它只显示了薄烛台。我认为这是某种错误。
但是,我能够纠正这个问题如下:
获取图表的渲染器,
将其转换为CandlestickRenderer
和
将其setAutoWidthMethod()
方法设置为CandlestickRenderer.WIDTHMETHOD_SMALLEST
。
您就是这样做的:
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);