CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-vnstock

A beginner-friendly yet powerful Python toolkit for financial analysis and automation — built to make modern investing accessible to everyone

Overview
Eval results
Files

data-visualization.mddocs/

Data Visualization

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.

Capabilities

Chart Wrapper Class Alias

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)

Chart Class

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."""

Chart Types

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
    """

Pandas Integration

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 Series

Usage Examples

Basic Chart Creation

import 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()

Using Pandas Integration

# 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()

Advanced Visualizations

# 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()

Financial Data Specific Examples

# 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()

Interactive Help

# Get help for specific chart methods
chart.help('timeseries')
chart.help('combo')
chart.help('heatmap')

Integration with VNStock Data

The visualization capabilities are designed to work seamlessly with all VNStock data sources:

  • Quote Data: Time series charts for price and volume
  • Financial Data: Bar charts for financial metrics comparison
  • Company Data: Pie charts for shareholder distribution
  • Trading Data: Heatmaps for trading flow analysis
  • Fund Data: Treemaps for portfolio allocation
  • Screening Results: Scatter plots for ratio analysis

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

docs

company-info.md

data-visualization.md

financial-statements.md

index.md

main-client.md

market-listings.md

mutual-funds.md

quote-data.md

stock-screening.md

trading-analytics.md

tile.json