JFreeChart:能否绘制以数值/整数为X轴的蜡烛图?
可以实现X轴为数值/整数类型的蜡烛图
当然可以做到,不用受默认时间戳X轴的限制,具体步骤如下:
改用支持数值型X轴的数据集实现
放弃默认绑定时间的OHLCDataset,使用DefaultHighLowDataset——它的构造函数直接接受double类型的X轴数据,不管是整数还是其他数值都能兼容。准备数据并创建数据集
示例代码如下:// 自定义X轴数值(这里用整数1-5) double[] xValues = {1, 2, 3, 4, 5}; // 对应每个X值的OHLC数据 double[] opens = {100, 102, 101, 105, 104}; double[] highs = {103, 105, 104, 107, 106}; double[] lows = {98, 100, 99, 102, 101}; double[] closes = {102, 103, 102, 106, 103}; // 可选:成交量数据 double[] volumes = {1000, 1200, 900, 1500, 1100}; DefaultHighLowDataset dataset = new DefaultHighLowDataset( "数值轴蜡烛图", xValues, opens, highs, lows, closes, volumes );创建图表并替换X轴为数值轴
用ChartFactory.createCandlestickChart生成图表后,默认X轴是日期轴,需要手动替换成NumberAxis:JFreeChart chart = ChartFactory.createCandlestickChart( "数值轴蜡烛图示例", "X轴数值", "价格", dataset, true ); // 获取绘图区并修改X轴配置 XYPlot plot = chart.getXYPlot(); NumberAxis xAxis = new NumberAxis("X轴数值"); plot.setDomainAxis(xAxis); // 如果需要强制X轴显示整数刻度,加上这行 xAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());可选:自定义蜡烛样式
要是想调整蜡烛的颜色、宽度等,可以获取渲染器修改:CandlestickRenderer renderer = (CandlestickRenderer) plot.getRenderer(); renderer.setUpPaint(Color.GREEN); // 上涨蜡烛颜色 renderer.setDownPaint(Color.RED); // 下跌蜡烛颜色
这样就能得到X轴为数值/整数类型的蜡烛图,完全脱离时间戳的限制。
内容的提问来源于stack exchange,提问作者cobby
相关产品推荐
相关产品推荐

