XYTextAnnotation 未显示在 XYPlot 上

XYTextAnnotation does not show up on XYPlot

我正在尝试为我的 XYPlot 添加注释;但不幸的是,他们似乎没有出现。

这是我的代码:

public JFreeChart createGraph() {
    int[][] audiogramR = {{250, 25}, {500, 15}, {1000, 30}, {2000, 40}, {4000, 50}, {8000, 60}};
    int[][] audiogramL = {{250, 60}, {500, 50}, {1000, 40}, {2000, 30}, {4000, 15}, {8000, 25}};
    XYSeries r = new XYSeries("Right");
    XYSeries l = new XYSeries("Left");

    for (int i = 0; i <= 5; i++) { //add data to series
        r.add(audiogramR[i][0], audiogramR[i][1]);
        l.add(audiogramL[i][0], audiogramL[i][1]);
    }
    XYSeriesCollection dataset = new XYSeriesCollection();  //add series to dataset
    dataset.addSeries(r);
    dataset.addSeries(l);

    NumberAxis yAxis = new NumberAxis("Decibels");      //create axes
    LogAxis xAxis = new LogAxis("Frequency");
    xAxis.setBase(2);

    xAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    yAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

    yAxis.setInverted(true);
    yAxis.setRange(-10, 120);

    Shape cross = ShapeUtilities.createDiagonalCross(3, 1);
    Shape outer = new Ellipse2D.Float(-3.5f, -3.5f, 7, 7);
    Shape inner = new Ellipse2D.Float(-3f, -3f, 6, 6);               //shapes for plot
    Area area = new Area(outer);
    area.subtract(new Area(inner));
    Shape ring = area;

    XYPlot plot = new XYPlot(dataset, xAxis, yAxis, new XYLineAndShapeRenderer(true, true)); //create xy plot for dataset and axes

    plot.getRenderer().setSeriesShape(1, cross);
    plot.getRenderer().setSeriesShape(0, ring);
    plot.setDomainGridlinesVisible(false);

    XYTextAnnotation label = new XYTextAnnotation("Annotation text here", 50, 1024); //create annotation
    plot.addAnnotation(label, true);

    JFreeChart chart = new JFreeChart("Audiogram", JFreeChart.DEFAULT_TITLE_FONT, plot, true);

    ChartPanel myChart = new ChartPanel(chart);
    myChart.setPreferredSize(pGraph.getSize()); //size according to my window
    myChart.setMouseWheelEnabled(false);
    pGraph.setLayout(new java.awt.BorderLayout());
    pGraph.add(myChart, BorderLayout.CENTER);   //add chart to jPanel in netbeans
    pGraph.validate();
}

产生这个:

显然,没有注解。有什么想法吗?

如前所述here,

The coordinates are specified in data space (they will be converted to Java2D space for display).

您的 y 值 1024 超出了为您的 yAxis 指定的范围。如前所述 here,查询数据本身以获得所需的坐标可能很有用。在下面的片段中,系列 r 提供倒数第二个点的数据 space 坐标:

double x = (double) r.getX(r.getItemCount() - 2);
double y = (double) r.getY(r.getItemCount() - 2);
XYTextAnnotation label = new XYTextAnnotation("Annotation", x, y);
plot.addAnnotation(label);