You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:35:40