feat: support label for line chart, #23

This commit is contained in:
vicanso 2022-09-22 20:10:45 +08:00
parent 825e65d930
commit de49ef8c68
3 changed files with 89 additions and 14 deletions

View file

@ -62,13 +62,6 @@ type BarChartOption struct {
Legend LegendOption
}
type barChartLabelRenderOption struct {
Text string
Style Style
X int
Y int
}
func (b *barChart) render(result *defaultRenderResult, seriesList SeriesList) (Box, error) {
p := b.p
opt := b.opt
@ -100,11 +93,12 @@ func (b *barChart) render(result *defaultRenderResult, seriesList SeriesList) (B
markPointPainter := NewMarkPointPainter(seriesPainter)
markLinePainter := NewMarkLinePainter(seriesPainter)
labelPainter := NewSeriesLabelPainter(seriesPainter)
rendererList := []Renderer{
labelPainter,
markPointPainter,
markLinePainter,
}
labelRenderOptions := make([]barChartLabelRenderOption, 0)
for index := range seriesList {
series := seriesList[index]
yRange := result.axisRanges[series.AxisIndex]
@ -168,8 +162,7 @@ func (b *barChart) render(result *defaultRenderResult, seriesList SeriesList) (B
}
textBox := seriesPainter.MeasureText(text)
labelRenderOptions = append(labelRenderOptions, barChartLabelRenderOption{
labelPainter.Add(LabelValue{
Text: text,
Style: labelStyle,
X: x + (barWidth-textBox.Width())>>1,
@ -192,10 +185,6 @@ func (b *barChart) render(result *defaultRenderResult, seriesList SeriesList) (B
Range: yRange,
})
}
for _, labelOpt := range labelRenderOptions {
seriesPainter.OverrideTextStyle(labelOpt.Style)
seriesPainter.Text(labelOpt.Text, labelOpt.X, labelOpt.Y)
}
// 最大、最小的mark point
err := doRender(rendererList...)
if err != nil {