def chart_descriptions(chart: Chart, labels, suffix: str=''):
    '\n\n    :param chart: Chart: The alt chart to be used in finding max points\n    :param suffix: str: The assumption is that the charts have similar column names.\n                   The census chart adds " Census" to the column names.\n                   Make sure to include a space or underscore as appropriate\n    :return: str: Returns a multi-line string description of the results\n    '
    messages = []
    cols = ['hospitalized', 'icu', 'ventilated']
    asterisk = False
    day = ('date' if ('date' in chart.data.columns) else 'day')
    for col in cols:
        if ((chart.data[col].idxmax() + 1) == len(chart.data)):
            asterisk = True
        on = chart.data[day][chart.data[col].idxmax()]
        if (day == 'date'):
            on = datetime.datetime.strftime(on, '%b %d')
        else:
            on += 1
        messages.append('{}{} peaks at {:,} on day {}{}'.format(labels[col], suffix, ceil(chart.data[col].max()), on, ('*' if asterisk else '')))
    if asterisk:
        messages.append('_* The max is at the upper bound of the data, and therefore may not be the actual max_')
    return '\n\n'.join(messages)
:param chart: Chart: The alt chart to be used in finding max points
:param suffix: str: The assumption is that the charts have similar column names.
               The census chart adds " Census" to the column names.
               Make sure to include a space or underscore as appropriate
:return: str: Returns a multi-line string description of the results
def chart_descriptions(chart: Chart, labels, suffix: str=):
    '\n\n    :param chart: Chart: The alt chart to be used in finding max points\n    :param suffix: str: The assumption is that the charts have similar column names.\n                   The census chart adds " Census" to the column names.\n                   Make sure to include a space or underscore as appropriate\n    :return: str: Returns a multi-line string description of the results\n    '
    messages = []
    cols = ['hospitalized', 'icu', 'ventilated']
    asterisk = False
    day = ('date' if ('date' in chart.data.columns) else 'day')
    for col in cols:
        if ((chart.data[col].idxmax() + 1) == len(chart.data)):
            asterisk = True
        on = chart.data[day][chart.data[col].idxmax()]
        if (day == 'date'):
            on = datetime.datetime.strftime(on, '%b %d')
        else:
            on += 1
        messages.append('{}{} peaks at {:,} on day {}{}'.format(labels[col], suffix, ceil(chart.data[col].max()), on, ('*' if asterisk else )))
    if asterisk:
        messages.append('_* The max is at the upper bound of the data, and therefore may not be the actual max_')
    return '\n\n'.join(messages)