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

如何在JFreeChart的多范围Y轴中根据数值获取对应轴的名称?

获取Y轴变量名称并显示在标签中

我明白你的需求啦——现在你能拿到Y轴的数值,但想在标签里把对应的变量名称也加上,这样鼠标悬停时能清楚知道是哪个指标的数值。咱们来改改代码就行:

首先,你可以通过XYDataSet获取对应的系列(Series),每个系列其实就对应你Y轴的一个变量,系列的Key就是变量名称。在你的代码里,只需要加一行获取名称的代码,然后把它和数值拼接起来显示在标签里。

修改后的代码如下:

public void chartMouseMoved(ChartMouseEvent event){
    ChartEntity chartEntity = event.getEntity();
    if ( chartEntity instanceof XYItemEntity) {
        XYItemEntity xyItemEntity = (XYItemEntity) chartEntity;
        XYDataSet xyDataSet = xyItemEntity.getDataset();
        int seriesIndex = xyItemEntity.getSeriesIndex();
        // 获取对应Y轴变量的名称(系列的Key)
        Comparable<?> seriesName = xyDataSet.getSeries(seriesIndex).getKey();
        // 转成字符串,如果名称为空可以给个默认值
        String variableName = seriesName != null ? seriesName.toString() : "未命名变量";
        
        double xValue = xyDataSet.getXValue(seriesIndex, xyItemEntity.getItem());
        double yValue = xyDataSet.getYValue(seriesIndex, xyItemEntity.getItem());
        this.xCrosshair.setValue(xValue);
        this.yCrosshair.setValue(yValue);
        // 把变量名称和数值拼接起来显示
        label.setText(String.format("%s: %.2f", variableName, yValue));
        label.setSize(label.getPreferredSize());
    }
}

关键说明:

  • xyDataSet.getSeries(seriesIndex):通过系列索引获取对应的系列对象,每个系列对应你Y轴的一个变量。
  • getKey():系列的Key就是你当初创建系列时设置的名称(比如XYSeries series = new XYSeries("温度");里的"温度"就是Key)。
  • 加了空值判断,避免如果系列名称为空时出现异常,给个默认的"未命名变量"兜底。

这样修改后,鼠标悬停在图表数据点上时,标签就会显示类似温度: 25.67这样的内容,清晰展示变量名称和对应数值啦!

内容的提问来源于stack exchange,提问作者shnnens

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:33:09