A beginner-friendly yet powerful Python toolkit for financial analysis and automation — built to make modern investing accessible to everyone
The chart_wrapper function and Chart class provide integrated charting and visualization capabilities supporting multiple chart types with pandas DataFrame integration through the vnstock_ezchart library.
The chart_wrapper is an alias for the Chart class imported from vnstock_ezchart, providing direct access to Chart functionality.
# chart_wrapper is an alias for the Chart class
chart_wrapper = Chart
# Usage: Create Chart instance directly
chart = chart_wrapper(data) # Same as: chart = Chart(data)Comprehensive charting class with multiple visualization types and pandas integration.
class Chart:
"""
Chart class for creating various visualization types.
"""
def __init__(self, data: Union[pd.DataFrame, pd.Series]):
"""
Initialize Chart with data.
Args:
data (Union[pd.DataFrame, pd.Series]): Data for visualization
"""
def help(self, func_name: str):
"""Display function docstring for specified chart method."""Comprehensive set of chart types for financial data visualization.
def bar(self, **kwargs):
"""Create bar chart visualization."""
def hist(self, **kwargs):
"""Create histogram visualization."""
def pie(self, labels=None, values=None, **kwargs):
"""
Create pie chart visualization.
Args:
labels: Labels for pie segments
values: Values for pie segments
"""
def timeseries(self, **kwargs):
"""Create time series line chart - ideal for price data."""
def heatmap(self, **kwargs):
"""Create heatmap visualization for correlation matrices."""
def scatter(self, x: str, y: str, **kwargs):
"""
Create scatter plot.
Args:
x (str): Column name for X-axis
y (str): Column name for Y-axis
"""
def treemap(self, values, labels, **kwargs):
"""
Create treemap visualization.
Args:
values: Values for treemap sizing
labels: Labels for treemap segments
"""
def boxplot(self, **kwargs):
"""Create box plot for distribution analysis."""
def pairplot(self, **kwargs):
"""Create pairwise relationship plots."""
def wordcloud(self, show_log=False, **kwargs):
"""
Create word cloud visualization.
Args:
show_log (bool): Enable logging, defaults to False
"""
def table(self, **kwargs):
"""Create formatted table display."""
def combo(self, bar_data, line_data, **kwargs):
"""
Create combination chart with bar and line elements.
Args:
bar_data: Data for bar chart component
line_data: Data for line chart component
"""Seamless integration with pandas DataFrames and Series through the viz property.
# Pandas extensions added by vnstock
pd.DataFrame.viz # Chart instance for DataFrame
pd.Series.viz # Chart instance for Seriesimport pandas as pd
from vnstock import chart_wrapper, Vnstock
# Get some stock data
stock = Vnstock()
tcb_data = stock.stock(symbol="TCB", source="VCI")
price_data = tcb_data.quote.history(start="2023-01-01", end="2023-12-31")
# Create charts using chart_wrapper
chart = chart_wrapper(price_data)
# Time series chart for stock prices
chart.timeseries()
# Volume bar chart
chart.bar()
# Price distribution histogram
chart.hist()# Direct pandas integration via .viz property
price_data.viz.timeseries()
price_data['volume'].viz.bar()
price_data['close'].viz.hist()
# Correlation heatmap
correlation_matrix = price_data[['open', 'high', 'low', 'close']].corr()
correlation_matrix.viz.heatmap()# Scatter plot for price vs volume analysis
chart.scatter(x='volume', y='close')
# Combo chart - volume bars with price line
chart.combo(
bar_data=price_data['volume'],
line_data=price_data['close']
)
# Box plot for price distribution analysis
chart.boxplot()
# Pie chart for portfolio allocation
portfolio_data = pd.Series([30, 25, 20, 15, 10],
index=['TCB', 'VCB', 'BID', 'HPG', 'FPT'])
portfolio_chart = chart_wrapper(portfolio_data)
portfolio_chart.pie()# Stock price time series with multiple companies
multi_stock_data = pd.DataFrame({
'TCB': tcb_price_data['close'],
'VCB': vcb_price_data['close'],
'BID': bid_price_data['close']
})
multi_chart = chart_wrapper(multi_stock_data)
multi_chart.timeseries()
# Trading volume analysis
volume_data = price_data['volume']
volume_chart = chart_wrapper(volume_data)
volume_chart.bar()
volume_chart.hist()
# Price correlation analysis
price_corr = multi_stock_data.corr()
price_corr.viz.heatmap()
# Financial ratio comparison
ratio_data = pd.DataFrame({
'ROE': [15.2, 18.5, 12.8],
'ROA': [1.2, 1.8, 1.1],
'NPM': [25.5, 30.2, 22.1]
}, index=['TCB', 'VCB', 'BID'])
ratio_chart = chart_wrapper(ratio_data)
ratio_chart.bar()# Get help for specific chart methods
chart.help('timeseries')
chart.help('combo')
chart.help('heatmap')The visualization capabilities are designed to work seamlessly with all VNStock data sources:
The Chart class automatically handles data formatting and provides appropriate visualization defaults for financial data types.
Install with Tessl CLI
npx tessl i tessl/pypi-vnstock