Infographics text bubble

This template joins a text bubble with a user selected chart, there are 4 options for the position of the text bubble (top, down, left, right), and it can be customized with background colors and images. It also provides the option to set an image on top of the bubble for the horizontal configuration.

The Method To Use

The method is s.plt.infographics_text_bubble()

It must contain the following input variables:

title: str
text: str
order: int
# The parameters that the chart function will take when executed
chart_parameters: Dict

And accepts the following input variables as optional:

rows_size: int = 3
cols_size: int = 12
# The funcion that will be executed passing the previous parameters,
# by default it will use a free_echarts bar chart
chart_function: Optional[Callable] = None
# the background image for the bubble
background_url: Optional[str] = None
# If there is no image this color will be used as the background
background_color: str = 'var(--background-default)'
# Where the bubble will be located ['top', 'bottom', 'left', 'right']
bubble_location: str = 'top'
# The image located avobe the bubble in the horizontal configs,
# if the string 'default' is passed it will take a default image
image_url: Optional[str] = None
# Size of the previous image
image_size: int = 100

Examples

All the examples use these values for the parameters:

menu_path = 'Infographics'title = 'Lorem ipsum'
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et " \
       "dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex" \
       " ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu" \
       " fugiat nulla pariatur. "
data = [
    {'date': dt.date(2021, 1, 1), 'x': 5, 'y': 5},
    {'date': dt.date(2021, 1, 2), 'x': 6, 'y': 5},
    {'date': dt.date(2021, 1, 3), 'x': 4, 'y': 5},
    {'date': dt.date(2021, 1, 4), 'x': 7, 'y': 5},
    {'date': dt.date(2021, 1, 5), 'x': 3, 'y': 5},
]
stacked_data = [
    {'Weekday': 'Mon', 'Email': 120, 'Union Ads': 132, 'Video Ads': 101, 'Search Engine': 134},
    {'Weekday': 'Tue', 'Email': 220, 'Union Ads': 182, 'Video Ads': 191, 'Search Engine': 234},
    {'Weekday': 'Wed', 'Email': 150, 'Union Ads': 232, 'Video Ads': 201, 'Search Engine': 154},
    {'Weekday': 'Thu', 'Email': 820, 'Union Ads': 932, 'Video Ads': 901, 'Search Engine': 934},
    {'Weekday': 'Fri', 'Email': 120, 'Union Ads': 132, 'Video Ads': 101, 'Search Engine': 134},
    {'Weekday': 'Sat', 'Email': 220, 'Union Ads': 182, 'Video Ads': 191, 'Search Engine': 234},
    {'Weekday': 'Sun', 'Email': 150, 'Union Ads': 232, 'Video Ads': 201, 'Search Engine': 154},
]

The first example uses a gauge chart and a stacked bar chart to show how the top and bottom options look like:

s.plt.infographics_text_bubble(
    order=0, cols_size=6,
    title=title, text=text,
    chart_function=s.plt.shimoku_gauge,
    chart_parameters=dict(
        value=random.randint(0, 100), name='Gauge', rows_size=18,
    ),
)
s.plt.infographics_text_bubble(
    order=2, cols_size=6, rows_size=4,
    title=title, text=text, bubble_location='bottom',
    chart_function=s.plt.stacked_bar,
    chart_parameters=dict(
        data=stacked_data,
        x="Weekday",
        x_axis_name='weekday',
        y_axis_name='visits',
        variant='clean',
    ),
    background_color='var(--color-stripe-light)',
)

The second example shows the default bar chart with the horizontal bubble configuration and an a background image:

s.plt.infographics_text_bubble(
    order=0, title=title,
    text=text, bubble_location='right',
    rows_size=3, cols_size=8,
    background_url='https://images.unsplash.com/photo-1569982175971-d92b01cf8694?ixlib=rb-4.0.3&ixid='
                   'MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=870&q=80',
    chart_parameters=dict(
        data=data,
        x='date',
    )
)

The third example shows how to use the images for the bubble:

s.plt.infographics_text_bubble(
    order=0, cols_size=6,
    title=title, text=text[:-52], bubble_location='left',
    image_url='default', image_size=60,
    background_color='var(--color-primary-light)',
    chart_parameters=dict(
        data=data,
        rows_size=34,
        cols_size=10,
        x='date', y='x',
        variant='clean shadow',
        padding='1,0,0,0'
    )
)
s.plt.infographics_text_bubble(
    order=2, cols_size=6, rows_size=4,
    title=title, text=text, bubble_location='right',
    image_url='default',
    chart_function=s.plt.table,
    chart_parameters=dict(
        data=(data*2)[:9],
        cols_size=10,
    )
)

Last updated