Skip to main content

lightweight-chart custom python server

Project description

lightweight-charts-server

lightweight-charts-python based chart hosting library

Installation

pip install --upgrade lightweight-charts-server

Examples

Examples of usage are in examples/

Get examples through git clone

git clone https://github.com/vegaxholdings/lightweight-charts-server.git

cd lightweight-charts-server

pip install -r requirements.txt

Run Examples

  1. python -m examples.1_setting_data.setting_data
  2. python -m examples.2_live_data.live_data
  3. python -m examples.3_tick_data.tick_data
  4. python -m examples.4_line_indicators.line_indicators
  5. python -m examples.5_styling.styling

Advanced

There are two types of Display: View and Stream.

View can receive values ​​through HTML Form and reflect them on the chart.

Stream can receive values ​​from outside and update the chart in real time.

View

graph LR
	wb("Web Form")
	subgraph Server
		dy("HTML")
		ftype
		subgraph display
			view
		end
		subgraph lightweight-charts code
			create("create(a,b,c) -> Chart")
		end
	end
	wb --> ftype --> create
	create --> view
	view --> dy
	
	dy --> Web

This code demonstrates how to interact with a Form through ftype.

from datetime import timedelta

from lightweight_charts import Chart
from lightweight_charts_server import ftype, View, Server

intervals = ftype.options("1m", "15m")

def create(
    option: intervals = intervals("15m"),
    color: ftype.Color = ftype.Color("#1B2E00"),
    boolean: ftype.Bool = ftype.Bool(False),
    num_int: ftype.Int = ftype.Int(14),  
    num_float: ftype.Int = ftype.Float(3.14),  
    string: ftype.Str = ftype.Str("apple"),  
    time: ftype.DateTime = ftype.DateTime.now() - timedelta(days=10),  
    df: ftype.DataFrame = ftype.DataFrame({"a": [], "b": [], "c": []}),
    config: ftype.JSON = ftype.JSON([1, 2, 3]),
) -> Chart:

    option.selected # -> str
    color.hex # -> str
    boolean.value # -> bool

    num_int # -> int
    num_float # -> float
    string # -> str
    time # -> datetime

    df # -> DataFrame
    config.obj # -> list or dict

    ...

    return chart

display = View(callback=create)
server = Server(display)

if __name__ == "__main__":
    server.serve()

Stream

graph LR
	subgraph Server
		subgraph display
			stream
		end
		subgraph lightweight-charts code
			update("update(chart)")
			Chart
		end
	end
	subgraph External
		Upbit
	end
		Chart --> stream
	update --> stream
	stream <--->|websocket| Web
	External --> update

This code streams prices in real time through the upbit exchange.

import time
from datetime import date, datetime, timedelta

import pyupbit
import pandas as pd
from lightweight_charts import Chart
from lightweight_charts_server import Stream, Server

TICKER = "KRW-XRP"

init_df = pyupbit.get_ohlcv(ticker=TICKER, interval="minute")


def update(chart: Chart):
    while True:
        update_df = pyupbit.get_ohlcv(ticker=TICKER, count=1, interval="minute")
        tick = pd.Series(
            {
                "time": date.today().isoformat(), 
                "price": update_df.iloc[0]["close"],
            }
        )
        chart.update_from_tick(tick)
        time.sleep(0.1)


chart = Chart(toolbox=True)
chart.set(init_df)

display = Stream(chart, callback=update)
server = Server(display)

if __name__ == "__main__":
    server.serve()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lightweight_charts_server-0.2.4.tar.gz (91.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lightweight_charts_server-0.2.4-py3-none-any.whl (93.7 kB view details)

Uploaded Python 3

File details

Details for the file lightweight_charts_server-0.2.4.tar.gz.

File metadata

File hashes

Hashes for lightweight_charts_server-0.2.4.tar.gz
Algorithm Hash digest
SHA256 034e0a9dd7a2b8aa1165595b91fd5f1b61bdfdf7edf5e702100c3efaf7c54e86
MD5 871a453b913e2b3835cc7b4286c43d88
BLAKE2b-256 48701d341f2cac823b6e7c2cb130bc300ddef93761ced0a99b8a11725cbd1a34

See more details on using hashes here.

File details

Details for the file lightweight_charts_server-0.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for lightweight_charts_server-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e33c4abfb91b0f913e801929ab9d962782496e7ee0ccd8f1778168fa359df012
MD5 09605a0f488da59fd54cdd9167467b18
BLAKE2b-256 320c4ead899a321d9be5974676c6fa4ecae78473d546c366a70c8a5192704505

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page