Skip to main content
v2.2

Figures and Text

ChartXY has multiple types of figure series to draw 2D shapes within the chart.

These shapes include:

Figure SeriesFigure Series

Polygon Series​

Polygon series allow you to render closed shapes with multiple connected vertices.

Creating Polygon Series​

polygon_series = chart.add_polygon_series()

Adding a Polygon​

polygon = polygon_series.add([
{'x': 0, 'y': 0},
{'x': 4, 'y': 0},
{'x': 2, 'y': 3}
])

Customizing Appearance​

Set stroke thickness and color:

polygon.set_stroke(thickness=2, color='#00bfff')

Set fill color:

polygon.set_color('#ffeecc')

Update polygon points:

polygon.set_dimensions([
{'x': 1, 'y': 1},
{'x': 3, 'y': 1},
{'x': 2, 'y': 4}
])

Ellipse Series​

Ellipse series can draw ovals and circles at any position and size.

Creating Ellipse Series​

ellipse_series = chart.add_ellipse_series()

Adding an Ellipse​

ellipse = ellipse_series.add(x=5, y=3, radius_x=2, radius_y=1)

Customizing Appearance​

Set stroke thickness and color:

ellipse.set_stroke(1.5, '#aa22cc')

Set fill color:

ellipse.set_color('#cceeff')

Update position and size:

ellipse.set_dimensions(x=6, y=4, radius_x=2.5, radius_y=1.2)

Rectangle Series​

Rectangles are defined by two diagonal corners. This series is useful for bounding boxes or heatmap overlays.

Creating Rectangle Series​

rectangle_series = chart.add_rectangle_series()

Adding a Rectangle​

rectangle = rectangle_series.add(x1=2, y1=2, x2=6, y2=4)

Customizing Appearance​

Set stroke style:

rectangle.set_stroke(thickness=2, color='#000000')

Set fill color:

rectangle.set_color('#aaeeff')

Change size or position:

rectangle.set_dimensions(x1=1, y1=1, x2=3, y2=2)

Segment Series​

Segments are simple straight lines between two points — often used to annotate or draw bounds.

Creating Segment Series​

segment_series = chart.add_segment_series()

Adding a Segment​

segment = segment_series.add_segment(start_x=0, start_y=0, end_x=5, end_y=5)

Customizing Appearance​

Set stroke thickness and color:

segment.set_stroke(thickness=1, color='#dd4444')

Update segment coordinates:

segment.set_dimensions(start_x=1, start_y=2, end_x=4, end_y=3)

Hover Highlighting for All Figure Series​

Configure how figures respond to mouse hover interactions.

# Enable hover highlighting (default behavior)
series.set_highlight_on_hover(enabled=True)

# Disable all highlighting interactions
series.set_highlight_on_hover(enabled=False)

# Or equivalently
series.set_highlight_on_hover(enabled=True, highlight_mode='noHighlighting')

# Highlight entire series on hover
series.set_highlight_on_hover(enabled=True, highlight_mode='onHover')

# Highlight only individual figures on hover
series.set_highlight_on_hover(enabled=True, highlight_mode='onHoverIndividual')

Text Series​

Text series allow you to draw text labels at specific coordinates in the chart. This is useful for annotations, labels, or overlaying values directly on the chart.

Creating Text Series​

text_series = chart.add_text_series()

Adding Text​

text = text_series.add(x=5, y=3, text="Hello World", alignment_x=0.5, alignment_y=0.5)
  • x, y: Position of the text.
  • text: The text content.
  • alignment_x: Horizontal alignment.
  • alignment_y: Vertical alignment.

Customizing Appearance​

Change text content:

text.set_text("Updated Label")

Set location:

text.set_location(x=6, y=4)

Set alignment:

text.set_alignment(x=1, y=0)

Set font style:

text.set_font(size=16, family='Arial, Helvetica, sans-serif')

Set text color:

text.set_color('#ff0000')

Set margin around the text:

text.set_margin(5)  # uniform margin
# or individually
text.set_margin(left=10, top=15, right=20, bottom=25)

All Figure and Text Series Common Methods​

Series Utility Methods​

This section works the same as for Line, to avoid duplication of guides, please refer to the section under Line

Series Configuration​

Auto-scrolling with axes:

series.set_auto_scrolling_enabled(True)

Legend​

Please see common legend section.

Examples​

Link to the examples