in atlas-chart/src/main/scala/com/netflix/atlas/chart/graphics/ValueAxis.scala [247:289]
private def drawWithOffset(
ticks: List[ValueTick],
g: Graphics2D,
x1: Int,
y1: Int,
x2: Int,
y2: Int
): Unit = {
val offset = ticks.head.v
val prefix = tickPrefix(ticks.last.v - offset)
val offsetStr = prefix.format(offset, tickLabelFmt)
val offsetTxt =
Text(
offsetStr,
font = ChartSettings.smallFont,
alignment = TextAlignment.RIGHT,
style = style
)
val offsetH = ChartSettings.smallFontDims.height * 2
val offsetW = ChartSettings.smallFontDims.width * (offsetStr.length + 3)
val yscale = scale(y1, y2)
val oy = yscale(offset)
val otop = oy - offsetW - tickMarkLength
val obottom = oy - tickMarkLength
drawLabel(offsetTxt, g, x1 + tickMarkLength, otop, x1 + offsetH + tickMarkLength, obottom)
g.drawLine(x1 + offsetH + tickMarkLength, oy, x1, oy)
ticks.tail.foreach { tick =>
val py = yscale(tick.v)
g.drawLine(x1, py, x1 + tickMarkLength, py)
if (plotDef.showTickLabels) {
val label = s"+${prefix.format(tick.v - offset, tickLabelFmt)}"
val txt =
Text(label, font = ChartSettings.smallFont, alignment = TextAlignment.LEFT, style = style)
val txtH = ChartSettings.smallFontDims.height
val ty = py - txtH / 2
if (ty + txtH < otop)
txt.draw(g, x1 + tickMarkLength + 1, ty, x2, ty + txtH)
}
}
}