# Chart and Indicators

A common use case that has been identified is to join indicators with other charts, as they are small components that can easily add insight, so we have facilitated this with the **chart and indicators**.

This template joins a chart with a description and a button that opens a modal.

### The Method To Use

The method is `s.plt.chart_and_indicators()`

It must contain the following input variables:

```python
menu_path: str 
order: int
# This are the parameters that the chart function will take when executed
chart_parameters: Dict
# List of groups of indicators, each one of them will be used as the input
# of an indicators function call
indicators_groups: List[Union[pd.DataFrame, List[Dict]]]
# The parameters that will be passed to the indicators calls
indicators_parameters: Dict
```

And accepts the following input variables as optional:

```python
chart_rows_size: int = 3
cols_size: int = 12
# This is 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
tabs_index: Optional[Tuple[str, str]] = None 
modal_name: Optional[str] = None
```

{% hint style="info" %}
Because it is using multiple indicators the function will return the next available order.
{% endhint %}

## Examples

This example shows how to use the method:

```python
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},
]

indicator_groups = [
    [
        {
            "description": "-950.55",
            "title": "Dow Jones",
            "value": "33,195.92",
            "align": "left",
            "color": "success",
            'variant': 'contained'
        },
        {
            "description": "-84.68",
            "title": "Nasdaq",
            "value": "10,852.16",
            "align": "left",
            "color": "success",
            'variant': 'contained'
        },
        {
            "description": "-950.55",
            "title": "Dow Jones",
            "value": "33,195.92",
            "align": "left",
            "color": "success",
            'variant': 'contained'
        },
        {
            "description": "-84.68",
            "title": "Nasdaq",
            "value": "10,852.16",
            "align": "left",
            "color": "success",
            'variant': 'contained'
        },
        {
            "description": "-950.55",
            "title": "Dow Jones",
            "value": "33,195.92",
            "align": "left",
            "color": "success",
            'variant': 'contained'
        },
    ],
    [
        {
            "description": "-950.55",
            "title": "Dow Jones",
            "value": "33,195.92",
            "align": "left",
            "color": "success",
            'variant': 'contained'
        },
        {
            "description": "-84.68",
            "title": "Nasdaq",
            "value": "10,852.16",
            "align": "left",
            "color": "success",
            'variant': 'contained'
        }
    ],
    [
        {
            "description": "Return of investment",
            "title": "ROI",
            "value": "1.5M",
            "align": "left",
            "color": "success",
            'variant': 'contained'
        },
        {
            "description": "% of times the algorithm has predicted the relative position of "
                      "NY prices with respect to HK prices correctly",
            "title": "Accuracy",
            "value": "76.67%",
            "align": "left",
            "color": "success",
            'variant': 'contained'
        }
    ],
    [
        {
            "description": "Return of investment",
            "title": "ROI",
            "value": "1.5M",
            "align": "left",
            "color": "success",
            'variant': 'contained'
        },
        {
            "description": "% of times the algorithm has predicted the relative position of "
                      "NY prices with respect to HK prices correctly",
            "title": "Accuracy",
            "value": "76.67%",
            "align": "left",
            "color": "success",
            'variant': 'contained'
        },
        {
            "description": "% of times the algorithm has predicted the relative position of "
                      "NY prices with respect to HK prices correctly",
            "title": "Accuracy",
            "value": "76.67%",
            "align": "left",
            "color": "success",
            'variant': 'contained'
        }
    ]
]

s.plt.chart_and_indicators(
    order=0, chart_rows_size=3, cols_size=6,
    chart_function=s.plt.line,
    chart_parameters=dict(
        data=data,
        x='date',
        y='x',
        title='Line Chart With Indicators',
    ),
    indicators_groups=indicator_groups,
)
```

<figure><img src="/files/jc3Y8s8VO2BKDUb3PdVt" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.shimoku.com/dev/elements/composite-template-charts/chart-and-indicators.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
