Skip to content

Misaligned tick labels when prefixed with additional characters #439

@antimatter84

Description

@antimatter84

I use a customized NumberAxis to prefix certain values on my value axis with an additional character. However, the alignment is incorrect for the prefixed tick labels and those labels are shifted too far to the right. What is causing this and how can I fix it?

Screenshot:

Image

Custom NumberAxis implementation:

class PrefixedNumberAxis extends NumberAxis {

    private final Map<Number, String> prefixedValues = Map.of(
        40, "\u2264", // less-equal
        250, "\u2265" // greater-equal
    );
    
    @Override
    protected List<Tick> refreshTicksVertical(Graphics2D g2, Rectangle2D dataArea, RectangleEdge edge) {
        List<?> ticks = super.refreshTicksVertical(g2, dataArea, edge);

        List<Ticks> modifiedTicks = ... // call createPrefixedTick() for every NumberTick
        return modifiedTicks;
    }
    
    private Tick createPrefixedTick(NumberTick numberTick) {
        String prefix = this.prefixedValues.get(numberTick.getNumber());
        if (prefix = null) {
            return numberTick;
        }

        return new NumberTick(
            numberTick.getNumber(),
            prefix + numberTick.getText(),  // <-- prefixing text
            numberTick.getTextAnchor(),
            numberTick.getRotationAnchor(),
            numberTick.getAngle()
        );
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions