在 JFreeChart 中创建更胖的烛台
Create Fatter Candlesticks in JFreeChart
我正在开发一个显示每日财务数据的应用程序,并选择使用 JFreeChart。我能够学习如何创建烛台图表,但我的问题在于自定义。
你看,我的目标更符合
而到目前为止,我所能做到的只是
.
无论我放大多远,烛台的宽度都没有增加。
我相当确定细烛台在某种程度上与特定时间范围的绑定有关。我已经尝试补救,但不确定我在这里做错了什么。
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);
}
虽然我给出的示例似乎与上面第一张图片代码中的 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);
我正在开发一个显示每日财务数据的应用程序,并选择使用 JFreeChart。我能够学习如何创建烛台图表,但我的问题在于自定义。
你看,我的目标更符合
而到目前为止,我所能做到的只是
无论我放大多远,烛台的宽度都没有增加。
我相当确定细烛台在某种程度上与特定时间范围的绑定有关。我已经尝试补救,但不确定我在这里做错了什么。
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);
}
虽然我给出的示例似乎与上面第一张图片代码中的 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);