A newer version of the Gradio SDK is available:
6.2.0
title: Examples
sidebar_position: 1
description: >-
This page provides examples of creating charts with the `openbb-charting`
extension.
keywords:
- tutorial
- OpenBB Platform
- Python client
- Fast API
- getting started
- extensions
- charting
- view
- Plotly
- toolkits
- how-to
- generic
- figure
import HeadTitle from '@site/src/components/General/HeadTitle.tsx';
Overview
This page will walk through creating different charts using the openbb-charting extension.
The perspective for this content is from the Python Interface,
and the examples will assume that the OpenBB Platform is installed with all optional packages.
from datetime import datetime, timedelta
from openbb import obb
Cumulative Returns
The historical (equity) prices can be requested for multiple symbols. The extension will attempt to handle variations accordingly. By default, more than three symbols will draw the chart as cumulative returns from the beginning of the series.
Default View
The tickers below are a collection of State Street Global Advisors SPDR funds, representing S&P 500 components. The data is looking back five years.
SPDRS = [
"SPY",
"XLE",
"XLB",
"XLI",
"XHB",
"XLP",
"XLY",
"XRT",
"XLF",
"XLV",
"XLK",
"XLC",
"XLU",
"XLRE",
]
start_date = (datetime.now() - timedelta(weeks=52*5)).date()
spdrs = obb.equity.price.historical(SPDRS, start_date=start_date, provider="yfinance", chart=True)
spdrs.show()
Redraw as YTD
The charting attribute of the command output has methods for creating the chart again.
The data parameter allows modifications to the data before creating the figure.
In this example, the length of the data is trimmed to the beginning of the year.
new_data = spdrs.to_df().loc[datetime(2024,12,29).date():]
spdrs.charting.to_chart(data=new_data, title="YTD")
:::note This replaces the chart that was already created. :::
Price Performance Bar Chart
The obb.equity.price.performance endpoint will create a bar chart over intervals.
price_performance = obb.equity.price.performance(SPDRS, chart=True)
price_performance.show()
Create Bar Chart
This example uses the create_bar_chart() method, which does not replace the existing chart, in price_performance.chart.
It isolates the one-month performance and orients the layout as horizontal.
new_data = price_performance.to_df().set_index("symbol").multiply(100).reset_index()
price_performance.charting.create_bar_chart(
data=new_data,
x="symbol",
y="one_month",
orientation="h",
title="One Month Price Performance",
xtitle="Percent (%)"
)
Create Your Own
This example analyzes the share volume turnover of the S&P 500 Energy Sector constituents, year-to-date.
symbols = [
'XOM',
'CVX',
'COP',
'WMB',
'EOG',
'KMI',
'OKE',
'MPC',
'PSX',
'SLB',
'VLO',
'BKR',
'HES',
'TRGP',
'EQT',
'OXY',
'TPL',
'FANG',
'EXE',
'DVN',
'HAL',
'CTRA',
'APA',
]
data = obb.equity.price.historical(symbols, start_date="2025-01-01", provider="yfinance")
create_bar_chart = data.charting.create_bar_chart
volume = data.to_df().groupby("symbol").sum()["volume"]
shares = obb.equity.profile(
symbols, provider="yfinance"
).to_df().set_index("symbol")["shares_float"]
df = volume.to_frame().join(shares)
df["Turnover"] = (df.volume/df.shares_float).round(4)
df = df.sort_values(by="Turnover", ascending=False).reset_index()
create_bar_chart(
data=df,
x="symbol",
y="Turnover",
title="S&P Energy Sector YTD Turnover Rate",
)