lets_plot.scale_shape_manual(values, name=None, breaks=None, labels=None, limits=None, na_value=None, guide=None, format=None)

Create your own discrete scale for shape aesthetic.

  • values (list of str) – A set of aesthetic values to map data values to. If this is a named vector, then the values will be matched based on the names. If unnamed, values will be matched in order (usually alphabetical) with the limits of the scale.

  • name (str) – The name of the scale - used as the axis label or the legend title. If None, the default, the name of the scale is taken from the first mapping used for that aesthetic.

  • breaks (list) – A numeric vector of positions (of ticks).

  • labels (list of str) – A vector of labels (on ticks).

  • limits (list) – Continuous scale: a numeric vector of length two providing limits of the scale. Discrete scale: a vector specifying the data range for the scale and the default order of their display in guides.

  • na_value – Missing values will be replaced with this value.

  • guide – A result returned by guide_legend() function or ‘none’ to hide the guide.

  • format (str) – Defines the format for labels on the scale. The syntax resembles Python’s: ‘.2f’ -> ‘12.45’ ‘Num {}’ -> ‘Num 12.456789’ ‘TTL: {.2f}$’ -> ‘TTL: 12.45$’ For more info see https://lets-plot.org/pages/formats.html.


Scale specification.

Return type



Create your own discrete scale for size aesthetic. Values are numbers, encoding shapes.


1import numpy as np
2from lets_plot import *
4x = np.arange(10)
5c = np.where(x < 5, 'a', 'b')
6ggplot({'x': x, 'y': x, 'c': c}, aes('x', 'y')) + \
7    geom_point(aes(shape='c'), size=5) + \
8    scale_shape_manual(values=[12, 13], name='shapes', labels=['12', '13'])