4

我想知道是否可以在轴描述中使用下标。我有以下代码

    XYItemRenderer lineYY = new StandardXYItemRenderer();
    lineYY.setSeriesPaint(0, Color.BLUE);
    lineYY.setSeriesVisibleInLegend(0,false);
    final NumberAxis yaxY = new NumberAxis("ax [m/s²]");
    yaxY.setRange(-11, 11);
    yaxY.setAutoRangeIncludesZero(false);
    XYPlot plotYY = new XYPlot(datasetY,null,yaxY, lineYY);
    plotYY.setRangeAxisLocation(AxisLocation.TOP_OR_LEFT);

有没有办法在字符串“a x [m/s²]”中为 x 下标?下标可以是例如 X₉</p>

4

3 回答 3

5

Using the approach shown here, you can specify an AttributedString for the desired axis label. Given a NumberAxis named domain, the example below uses TextAttribute values to alter the SIZE and WEIGHT of some characters, subscripts the second character and superscripts the exponent.

String s = "ax [m/s2]";
AttributedString as = new AttributedString(s);
as.addAttribute(TextAttribute.SIZE, 24, 0, 2);
as.addAttribute(TextAttribute.SIZE, 16, 3, 9);
as.addAttribute(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD, 0, 2);
as.addAttribute(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUB, 1, 2);
as.addAttribute(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER, 7, 8);
domain.setAttributedLabel(as);

image

于 2015-04-22T21:08:06.453 回答
1

您可以尝试对下标/上标使用 unicode 值 - 这些值应该受到轴标签的 Graphics2D 渲染(通过 Graphics2D.drawString 方法)的尊重。例如 'X\u2089' 将呈现类似于 X₉。这当然取决于现有的 Unicode 下标值以及支持它的 java。

于 2015-04-21T23:44:45.483 回答
1

我不确定 jFreeChart,但纯 Java 字符串可以承受,请尝试:

final NumberAxis yaxY = new NumberAxis("a\u2093 [m/s²]");

见:http ://www.fileformat.info/info/unicode/char/2093/index.htm

于 2015-04-21T23:45:53.450 回答