Chart2 Direct Legend Position (Static)

Overview

The ooodev.format.chart2.direct.legend.position_size.Position class is used to specify the position of the legend.

Calls to the Chart2.style_legend() and method is used to style legend.

Setup

General setup for this example.

import uno
from ooodev.format.chart2.direct.legend.position_size import (
    Position as ChartLegendPosition,
    LegendPosition,
    DirectionModeKind,
)
from ooodev.format.chart2.direct.general.borders import LineProperties as ChartLineProperties
from ooodev.format.chart2.direct.general.area import Gradient as ChartGradient
from ooodev.format.chart2.direct.general.area import GradientStyle, ColorRange
from ooodev.office.calc import Calc
from ooodev.office.chart2 import Chart2
from ooodev.utils.color import StandardColor
from ooodev.gui import GUI
from ooodev.utils.kind.zoom_kind import ZoomKind
from ooodev.loader.lo import Lo

def main() -> int:
    with Lo.Loader(connector=Lo.ConnectPipe()):
        doc = Calc.open_doc("pie_chart.ods")
        GUI.set_visible(True, doc)
        Lo.delay(500)
        Calc.zoom(doc, ZoomKind.ZOOM_100_PERCENT)

        sheet = Calc.get_active_sheet()

        Calc.goto_cell(cell_name="A1", doc=doc)
        chart_doc = Chart2.get_chart_doc(sheet=sheet, chart_name="pie_chart")

        chart_bdr_line = ChartLineProperties(color=StandardColor.BRICK, width=1)
        chart_grad = ChartGradient(
            chart_doc=chart_doc,
            step_count=64,
            style=GradientStyle.SQUARE,
            angle=45,
            grad_color=ColorRange(StandardColor.GREEN_DARK4, StandardColor.TEAL_LIGHT2),
        )
        Chart2.style_background(chart_doc=chart_doc, styles=[chart_grad, chart_bdr_line])

        legend_pos = ChartLegendPosition(
            pos=LegendPosition.PAGE_END, no_overlap=True, mode=DirectionModeKind.LR_TB
        )
        Chart2.style_legend(chart_doc=chart_doc, styles=[legend_pos])

        Lo.delay(1_000)
        Lo.close_doc(doc)
    return 0

if __name__ == "__main__":
    SystemExit(main())

Setting the Legend Position

from ooodev.format.chart2.direct.legend.position_size import (
    Position as ChartLegendPosition,
    LegendPosition,
    DirectionModeKind,
)
# ... other code

legend_pos = ChartLegendPosition(
    pos=LegendPosition.PAGE_END, no_overlap=True, mode=DirectionModeKind.LR_TB
)
Chart2.style_legend(chart_doc=chart_doc, styles=[legend_pos])

The results are visible in Fig. 703 and Fig. 704.

Chart with Legend Set to Bottom

Fig. 703 Chart with Legend Set to Bottom

Chart Legend Position Dialog

Fig. 704 Chart Legend Position Dialog