“ 最近我一直在忙于搭建股票交易系统,为了更好地展示股票数据,我一直在寻找适合的数据可视化工具。经过反复比较,我发现Highcharts表现得非常出色。在这篇文章中,我将分享我通过五种方法来实现股票图表的优化。
首先,我发现Highcharts提供了丰富的图表类型,包括线图、柱状图、饼图等,可以满足不同类型的股票数据展示需求。我可以根据具体的情况选择最适合的图表类型,使得数据更加直观易懂。
其次,Highcharts还提供了强大的交互功能。我可以通过添加鼠标悬停提示、点击事件等功能,使得用户可以更方便地查看和分析股票数据。例如,当用户将鼠标悬停在某个数据点上时,会显示该点的具体数值,这样用户可以更加准确地获取股票的信息。
第三,Highcharts还支持动态更新数据。这对于股票数据来说非常重要,因为股票价格是时刻在变动的。通过动态更新数据,我可以实时展示最新的股票价格,使得用户可以及时了解市场动态。
第四,Highcharts还提供了灵活的配置选项。我可以通过设置不同的参数来调整图表的样式和布局,使得图表更加符合我的需求。例如,我可以设置图表的背景颜色、坐标轴的刻度间隔等,来使得图表更加美观和易读。
最后,Highcharts还支持导出图表为图片或PDF格式。这对于我来说非常方便,因为我可以将生成的图表保存下来,方便与他人分享或用于报告展示。”
方法01: 官方的python-Highchart
安装HighCharts包
pip install highcharts-core``pip install highcharts-stock``pip install highcharts-map``pip install highcharts-gantt
线图代码展示实现如下:
(这里注意的是以上对python版本有要求需满足3.10+)
from highcharts_core.options import HighchartsOptions``from highcharts_core.chart import Char``as_dict = {``'chart': {``'type': 'spline',``'inverted': True` `},``'title': {``'text': 'Atmosphere Temperature by Altitude',``'align': 'left'` `},``'subtitle': {``'text': 'According to the Standard Atmosphere Model',``'align': 'left'` `},``'xAxis': {``'reversed': False,``'title': {``'enabled': True,``'text': 'Altitude'` `},``'labels': {``'format': '{value} km'` `},``'accessibility': {``'rangeDescription': 'Range: 0 to 80 km.'` `},``'maxPadding': 0.05,``'showLastLabel': True` `},``'yAxis': {``'title': {``'text': 'Temperature'` `},``'labels': {``'format': '{value}°'` `},``'accessibility': {``'rangeDescription': 'Range: -90°C to 20°C.'` `},``'lineWidth': 2` `},``'legend': {``'enabled': False` `},``'tooltip': {``'headerFormat': '<b>{series.name}</b><br/>',``'pointFormat': '{point.x} km: {point.y}°C'` `},``'plotOptions': {``'spline': {``'marker': {``'enable': False` `}` `}` `},``'series': [{``'name': 'Temperature',``'data': [[0, 15], [10, -50], [20, -56.5], [30, -46.5], [40, -22.1],` `[50, -2.5], [60, -27.7], [70, -55.7], [80, -76.5]]` `}]``}``chart = Chart(options = as_dict)`` ``chart.display()
多线图代码展示实现如下:
from highcharts_core.chart import Chart``from highcharts_core.options.series.spline import SplineSeries``import datetime`` ``options = {` `'chart': {` `'type': 'spline'` `},` `'title': {` `'text': 'Snow depth at Vikjafjellet, Norway'` `},` `'subtitle': {` `'text': 'Irregular time data in Highcharts JS'` `},` `'xAxis': {` `'type': 'datetime',` `'dateTimeLabelFormats': {` `'month': '%e. %b',` `'year': '%b'` `},` `'title': {` `'text': 'Date'` `}` `},` `'yAxis': {` `'title': {` `'text': 'Snow depth (m)'` `},` `'min': 0` `},` `'tooltip': {` `'headerFormat': '<b>{series.name}</b><br>',` `'pointFormat': '{point.x:%e. %b}: {point.y:.2f} m'` `},`` ` `'plotOptions': {` `'series': {` `'marker': {` `'enabled': True,` `'radius': 2.5` `}` `}` `},`` ` `'colors': ['#6CF', '#39F', '#06C', '#036', '#000']``}`` `` ``series1 = SplineSeries(name = 'Winter 2019-2020',` `data = [` `[datetime.date(1970, 10, 24), 0],` `[datetime.date(1970, 10, 27), 0.12],` `[datetime.date(1970, 10, 30), 0.09],` `[datetime.date(1970, 11, 3), 0.13],` `[datetime.date(1970, 11, 6), 0.12],` `[datetime.date(1970, 11, 9), 0.13],` `[datetime.date(1970, 11, 12), 0.13],` `[datetime.date(1970, 11, 15), 0.16],` `[datetime.date(1970, 11, 18), 0.19],` `[datetime.date(1970, 11, 21), 0.25],` `[datetime.date(1970, 11, 24), 0.26],` `[datetime.date(1970, 11, 27), 0.24],` `[datetime.date(1970, 11, 30), 0.25],` `[datetime.date(1970, 12, 3), 0.26],` `[datetime.date(1970, 12, 6), 0.36],` `[datetime.date(1970, 12, 9), 0.43],` `[datetime.date(1970, 12, 12), 0.32],` `[datetime.date(1970, 12, 15), 0.48],` `[datetime.date(1970, 12, 18), 0.5],` `[datetime.date(1970, 12, 21), 0.44],` `[datetime.date(1970, 12, 24), 0.43],` `[datetime.date(1970, 12, 27), 0.45],` `[datetime.date(1970, 12, 30), 0.4],` `[datetime.date(1971, 1, 3), 0.39],` `[datetime.date(1971, 1, 6), 0.56],` `[datetime.date(1971, 1, 9), 0.57],` `[datetime.date(1971, 1, 12), 0.68],` `[datetime.date(1971, 1, 15), 0.93],` `[datetime.date(1971, 1, 18), 1.11],` `[datetime.date(1971, 1, 21), 1.01],` `[datetime.date(1971, 1, 24), 0.99],` `[datetime.date(1971, 1, 27), 1.17],` `[datetime.date(1971, 1, 30), 1.24],` `[datetime.date(1971, 2, 3), 1.41],` `[datetime.date(1971, 2, 6), 1.47],` `[datetime.date(1971, 2, 9), 1.4],` `[datetime.date(1971, 2, 12), 1.92],` `[datetime.date(1971, 2, 15), 2.03],` `[datetime.date(1971, 2, 18), 2.46],` `[datetime.date(1971, 2, 21), 2.53],` `[datetime.date(1971, 2, 24), 2.73],` `[datetime.date(1971, 2, 27), 2.67],` `[datetime.date(1971, 3, 3), 2.65],` `[datetime.date(1971, 3, 6), 2.62],` `[datetime.date(1971, 3, 9), 2.79],` `[datetime.date(1971, 3, 13), 2.93],` `[datetime.date(1971, 3, 20), 3.09],` `[datetime.date(1971, 3, 27), 2.76],` `[datetime.date(1971, 3, 30), 2.73],` `[datetime.date(1971, 4, 4), 2.9],` `[datetime.date(1971, 4, 9), 2.77],` `[datetime.date(1971, 4, 12), 2.78],` `[datetime.date(1971, 4, 15), 2.76],` `[datetime.date(1971, 4, 18), 2.76],` `[datetime.date(1971, 4, 21), 2.7],` `[datetime.date(1971, 4, 24), 2.61],` `[datetime.date(1971, 4, 27), 2.52],` `[datetime.date(1971, 4, 30), 2.53],` `[datetime.date(1971, 5, 3), 2.55],` `[datetime.date(1971, 5, 6), 2.52],` `[datetime.date(1971, 5, 9), 2.44],` `[datetime.date(1971, 5, 12), 2.43],` `[datetime.date(1971, 5, 15), 2.43],` `[datetime.date(1971, 5, 18), 2.48],` `[datetime.date(1971, 5, 21), 2.41],` `[datetime.date(1971, 5, 24), 2.16],` `[datetime.date(1971, 5, 27), 2.01],` `[datetime.date(1971, 5, 30), 1.88],` `[datetime.date(1971, 6, 2), 1.62],` `[datetime.date(1971, 6, 6), 1.43],` `[datetime.date(1971, 6, 9), 1.3],` `[datetime.date(1971, 6, 12), 1.11],` `[datetime.date(1971, 6, 15), 0.84],` `[datetime.date(1971, 6, 18), 0.54],` `[datetime.date(1971, 6, 21), 0.19],` `[datetime.date(1971, 6, 23), 0]` `])``series2 = SplineSeries(name = 'Winter 2020-2021',` `data = [` `[datetime.date(1970, 11, 14), 0],` `[datetime.date(1970, 12, 6), 0.35],` `[datetime.date(1970, 12, 13), 0.35],` `[datetime.date(1970, 12, 20), 0.33],` `[datetime.date(1970, 12, 30), 0.53],` `[datetime.date(1971, 1, 13), 0.62],` `[datetime.date(1971, 1, 20), 0.6],` `[datetime.date(1971, 2, 2), 0.69],` `[datetime.date(1971, 2, 18), 0.67],` `[datetime.date(1971, 2, 21), 0.65],` `[datetime.date(1971, 2, 24), 0.66],` `[datetime.date(1971, 2, 27), 0.66],` `[datetime.date(1971, 3, 3), 0.61],` `[datetime.date(1971, 3, 6), 0.6],` `[datetime.date(1971, 3, 9), 0.69],` `[datetime.date(1971, 3, 12), 0.66],` `[datetime.date(1971, 3, 15), 0.75],` `[datetime.date(1971, 3, 18), 0.76],` `[datetime.date(1971, 3, 21), 0.75],` `[datetime.date(1971, 3, 24), 0.69],` `[datetime.date(1971, 3, 27), 0.82],` `[datetime.date(1971, 3, 30), 0.86],` `[datetime.date(1971, 4, 3), 0.81],` `[datetime.date(1971, 4, 6), 1],` `[datetime.date(1971, 4, 9), 1.15],` `[datetime.date(1971, 4, 10), 1.35],` `[datetime.date(1971, 4, 12), 1.26],` `[datetime.date(1971, 4, 15), 1.18],` `[datetime.date(1971, 4, 18), 1.14],` `[datetime.date(1971, 4, 21), 1.04],` `[datetime.date(1971, 4, 24), 1.06],` `[datetime.date(1971, 4, 27), 1.05],` `[datetime.date(1971, 4, 30), 1.03],` `[datetime.date(1971, 5, 3), 1.01],` `[datetime.date(1971, 5, 6), 0.98],` `[datetime.date(1971, 5, 9), 0.94],` `[datetime.date(1971, 5, 12), 0.8],` `[datetime.date(1971, 5, 15), 0.61],` `[datetime.date(1971, 5, 18), 0.43],` `[datetime.date(1971, 5, 21), 0.29],` `[datetime.date(1971, 5, 24), 0.1],` `[datetime.date(1971, 5, 26), 0]` `])``series3 = SplineSeries(name = 'Winter 2021-2022',` `data = [` `[datetime.date(1970, 11, 5), 0],` `[datetime.date(1970, 11, 12), 0.1],` `[datetime.date(1970, 11, 21), 0.15],` `[datetime.date(1970, 11, 22), 0.19],` `[datetime.date(1970, 11, 27), 0.17],` `[datetime.date(1970, 11, 30), 0.27],` `[datetime.date(1970, 12, 2), 0.25],` `[datetime.date(1970, 12, 4), 0.27],` `[datetime.date(1970, 12, 5), 0.26],` `[datetime.date(1970, 12, 6), 0.25],` `[datetime.date(1970, 12, 7), 0.26],` `[datetime.date(1970, 12, 8), 0.26],` `[datetime.date(1970, 12, 9), 0.25],` `[datetime.date(1970, 12, 10), 0.25],` `[datetime.date(1970, 12, 11), 0.25],` `[datetime.date(1970, 12, 12), 0.26],` `[datetime.date(1970, 12, 22), 0.22],` `[datetime.date(1970, 12, 23), 0.22],` `[datetime.date(1970, 12, 24), 0.22],` `[datetime.date(1970, 12, 25), 0.24],` `[datetime.date(1970, 12, 26), 0.24],` `[datetime.date(1970, 12, 27), 0.24],` `[datetime.date(1970, 12, 28), 0.24],` `[datetime.date(1970, 12, 29), 0.24],` `[datetime.date(1970, 12, 30), 0.22],` `[datetime.date(1970, 12, 31), 0.18],` `[datetime.date(1971, 1, 1), 0.17],` `[datetime.date(1971, 1, 2), 0.23],` `[datetime.date(1971, 1, 9), 0.5],` `[datetime.date(1971, 1, 10), 0.5],` `[datetime.date(1971, 1, 11), 0.53],` `[datetime.date(1971, 1, 12), 0.48],` `[datetime.date(1971, 1, 13), 0.4],` `[datetime.date(1971, 1, 17), 0.36],` `[datetime.date(1971, 1, 22), 0.69],` `[datetime.date(1971, 1, 23), 0.62],` `[datetime.date(1971, 1, 29), 0.72],` `[datetime.date(1971, 2, 2), 0.95],` `[datetime.date(1971, 2, 10), 1.73],` `[datetime.date(1971, 2, 15), 1.76],` `[datetime.date(1971, 2, 26), 2.18],` `[datetime.date(1971, 3, 2), 2.22],` `[datetime.date(1971, 3, 6), 2.13],` `[datetime.date(1971, 3, 8), 2.11],` `[datetime.date(1971, 3, 9), 2.12],` `[datetime.date(1971, 3, 10), 2.11],` `[datetime.date(1971, 3, 11), 2.09],` `[datetime.date(1971, 3, 12), 2.08],` `[datetime.date(1971, 3, 13), 2.08],` `[datetime.date(1971, 3, 14), 2.07],` `[datetime.date(1971, 3, 15), 2.08],` `[datetime.date(1971, 3, 17), 2.12],` `[datetime.date(1971, 3, 18), 2.19],` `[datetime.date(1971, 3, 21), 2.11],` `[datetime.date(1971, 3, 24), 2.1],` `[datetime.date(1971, 3, 27), 1.89],` `[datetime.date(1971, 3, 30), 1.92],` `[datetime.date(1971, 4, 3), 1.9],` `[datetime.date(1971, 4, 6), 1.95],` `[datetime.date(1971, 4, 9), 1.94],` `[datetime.date(1971, 4, 12), 2],` `[datetime.date(1971, 4, 15), 1.9],` `[datetime.date(1971, 4, 18), 1.84],` `[datetime.date(1971, 4, 21), 1.75],` `[datetime.date(1971, 4, 24), 1.69],` `[datetime.date(1971, 4, 27), 1.64],` `[datetime.date(1971, 4, 30), 1.64],` `[datetime.date(1971, 5, 3), 1.58],` `[datetime.date(1971, 5, 6), 1.52],` `[datetime.date(1971, 5, 9), 1.43],` `[datetime.date(1971, 5, 12), 1.42],` `[datetime.date(1971, 5, 15), 1.37],` `[datetime.date(1971, 5, 18), 1.26],` `[datetime.date(1971, 5, 21), 1.11],` `[datetime.date(1971, 5, 24), 0.92],` `[datetime.date(1971, 5, 27), 0.75],` `[datetime.date(1971, 5, 30), 0.55],` `[datetime.date(1971, 6, 3), 0.35],` `[datetime.date(1971, 6, 6), 0.21],` `[datetime.date(1971, 6, 9), 0]` `])``options['series'] = [series1, series2, series3]`` ``chart = Chart.from_options(options)``chart.display()``
股票代码展示实现如下:
from highcharts_stock.chart import Chart``from highcharts_stock.options.series.hlc import HLCSeries``import requests``import json``stock_response = requests.get('https://demo-live-data.highcharts.com/aapl-ohlc.json')``stock_data_string = stock_response.text``stock_data=json.loads(stock_data)``as_dict = {` `'range_selector': {` `'selected': 2` `},` `'title': {` `'text': 'AAPL Stock Price'` `},` `'series': [` `{` `'type': 'hlc',` `'name': 'AAPL Stock Price',` `'use_ohlc_data': True,` `'data': stock_data,` `'accessibility': {` `'point': {` `'value_description_format': '{xDescription}. Open: {point.open}, High: {point.high}, low: {point.low}, close: {point.close}.'` `}` `},` `'data_grouping': {` `'units': [[` `'week',` `[1]` `],` `[` `'month',` `[1, 2, 3, 4, 6]` `]]` `}` `}` `]``}``chart = Chart.from_options(as_dict)``chart.display()
方法02: 官方的panel_Highchart
安装
pip install panel-highcharts
线图代码展示实现如下:
import panel_highcharts as ph``import panel as pn``pn.extension('highchart')``ph.config.theme("auto")`` ``configuration = {` `"title": {"text": "HighChart Pane"},` `"series": [` `{` `"name": "series1",` `"data": [1, 2, 3, 4, 5],` `}` `]``}`` ``chart = ph.HighChart(object=configuration, sizing_mode="stretch_both", min_height=500)``chart
股票代码展示实现如下:
import requests, json``import panel_highcharts as ph`` ``ph.config.theme("auto")``import panel as pn``pn.extension('highstock')``data = requests.get('https://cdn.jsdelivr.net/gh/highcharts/highcharts@v7.0.0/samples/data/new-intraday.json').json()``configuration = {` `"title": {"text": "AAPL stock price by minute"},` `"rangeSelector": {` `"buttons": [` `{"type": "hour", "count": 1, "text": "1h"},` `{"type": "day", "count": 1, "text": "1D"},` `{"type": "all", "count": 1, "text": "All"},` `],` `"selected": 1,` `"inputEnabled": False,` `},` `"series": [` `{"name": "AAPL", "type": "candlestick", "data": data, "tooltip": {"valueDecimals": 2}}` `],``}``chart = ph.HighStock(object=configuration, sizing_mode="stretch_both", min_height=400)``chart
地图代码展示实现如下:
import panel_highcharts as ph``ph.config.theme("auto")``ph.config.js_files(mapdata=["custom/europe"])` `import panel as pn``pn.extension('highmap')``configuration = {` `"chart": {"map": "custom/europe", "borderWidth": 1},` `"title": {"text": "Nordic countries"},` `"subtitle": {"text": "Demo of drawing all areas in the map, only highlighting partial data"},` `"legend": {"enabled": False},` `"series": [` `{` `"name": "Country",` `"data": [["is", 1], ["no", 1], ["se", 1], ["dk", 1], ["fi", 1]],` `"dataLabels": {` `"enabled": True,` `"color": "#FFFFFF",` `"formatter": """function () {` `if (this.point.value) {` `return this.point.name;` `}` `}""",` `},` `"tooltip": {"headerFormat": "", "pointFormat": "{point.name}"},` `}` `],``}``chart = ph.HighMap(object=configuration, sizing_mode="stretch_both", min_height=400)``chart
方法03: Nicegui实现
安装
pip install nicegui
条形图代码展示实现如下:
from nicegui import ui``from random import random`` ``chart = ui.chart({` `'title': False,` `'chart': {'type': 'bar'},` `'xAxis': {'categories': ['A', 'B']},` `'series': [` `{'name': 'Alpha', 'data': [0.1, 0.2]},` `{'name': 'Beta', 'data': [0.3, 0.4]},` `],``}).classes('w-full')`` ``def update():` `chart.options['series'][0]['data'][0] = random()` `chart.update()`` ``ui.button('Update', on_click=update)`` ``ui.run()
股票图代码展示实现如下:
from datetime import datetime, timedelta``import time``import akshare as ak``from nicegui import ui``df = ak.stock_zh_a_daily(symbol="sh600519", adjust="qfq")``df["date"] = df["date"].astype(str)``df["date"] = df["date"].apply(lambda x: int(time.mktime(time.strptime(x,"%Y-%m-%d"))) * 1000)``stock = df[['date', 'open', 'high', 'low', 'close']].values.tolist()`` `` `` ``as_dict = {` `'range_selector': {` `'selected': 2` `},` `'title': {` `'text': '茅台股价分析'` `},` `'navigator': {` `'enabled': True` `},` `'credits': {` `'enabled':False` `},` `'series': [` `{` `'type': 'candlestick',` `'name': 'AAPL Stock Price',` `'data': stock` `},` `]``}`` `` ``chart = ui.chart(as_dict,type='stockChart', extras=['stock']).classes('w-full h-200')``ui.run()``
方法04: JustPy实现
安装
pip install justpy
条形图代码展示实现如下:
import justpy as jp`` `` ``my_chart_def = """``{` `chart: {` `type: 'bar'` `},` `title: {` `text: 'Fruit Consumption'` `},` `xAxis: {` `categories: ['Apples', 'Bananas', 'Oranges']` `},` `yAxis: {` `title: {` `text: 'Fruit eaten'` `}` `},` `series: [{` `name: 'Jane',` `data: [1, 0, 4]` `}, {` `name: 'John',` `data: [5, 7, 3]` `}]``}``"""`` `` ``def create_chart_test2():` `wp = jp.WebPage()` `for chart_type in ["bar", "column", "line", "spline"]:` `my_chart = jp.HighCharts(a=wp, classes="m-2 p-2 border w-1/2", options=my_chart_def)` `my_chart.options.chart.type = chart_type` `my_chart.options.title.text = f"Chart of Type {chart_type.capitalize()}"` `my_chart.options.subtitle.text = f"Subtitle {chart_type.capitalize()}"` `return wp`` ``jp.justpy(create_chart_test2)
股票图代码展示实现如下:
import justpy as jp``import pandas as pd``import datetime`` ``epoch = datetime.datetime(1970, 1, 1)``grouping_units = [["week", [1]], ["month", [1, 2, 3, 4, 6]]]`` ``chart_dict = {` `"rangeSelector": {"selected": 1},` `"yAxis": [` `{` `"labels": {"align": "right", "x": -3},` `"title": {"text": "OHLC"},` `"height": "60%",` `"lineWidth": 2,` `"resize": {"enabled": True},` `},` `{` `"labels": {"align": "right", "x": -3},` `"title": {"text": "Volume"},` `"top": "65%",` `"height": "35%",` `"offset": 0,` `"lineWidth": 2,` `},` `],` `"tooltip": {"split": True},` `"series": [` `{` `"type": "candlestick",` `"tooltip": {"valueDecimals": 2},` `"dataGrouping": {"units": grouping_units},` `},` `{` `"type": "column",` `"name": "Volume",` `"yAxis": 1,` `"dataGrouping": {"units": grouping_units},` `},` `],``}`` `` ``def convert_date2(date_string):` `date = datetime.datetime.strptime(date_string, "%Y-%m-%d")` `return (date - epoch).total_seconds() * 1000`` `` ``async def stock_test2(request):` `wp = jp.WebPage(highcharts_theme="grid")` `ticker = request.query_params.get("ticker", "MSFT").upper()` `if ticker not in ["AAPL", "IBM", "INTC", "MSFT"]:` `ticker = "MSFT"` `data = await jp.JustPy.loop.run_in_executor(` `None, pd.read_csv, f"https://elimintz.github.io/stocks/{ticker}.csv"` `)` `chart = jp.HighStock(` `a=wp,` `classes="m-1 p-2 border w-10/12",` `options=chart_dict,` `style="height: 600px",` `)` `o = chart.options` `o.title.text = f"{ticker} Historical Prices"` `x = list(data["Date"].map(convert_date2))` `o.series[0].data = list(` `zip(x, data["Open"], data["High"], data["Low"], data["Close"])` `)` `o.series[0].name = ticker` `o.series[1].data = list(zip(x, data["Volume"]))` `return wp`` `` ``jp.justpy(stock_test2)``
方法05: Streamlit实现
安装
pip install streamlit-highcharts
`import streamlit as st``import streamlit_highcharts as hct`` ``chart_def={` `"title":{` `"text":"Sales of petroleum products March, Norway",` `"align":"left"` `},` `"xAxis":{` `"categories":["Jet fuel","Duty-free diesel"]` `},` `"yAxis":{` `"title":{"text":"Million liter"}` `},` `"series":[` `{"type":"column",` `"name":"2020",` `"data":[59,83]},` `{"type":"column",` `"name":"2021",` `"data":[24,79]` `},` `{"type":"column",` `"name":"2022",` `"data":[58,88]` `},` `{"type":"spline",` `"name":"Average",` `"data":[47,83.33],` `"marker":{` `"lineWidth":2,` `"fillColor":"black",` `}` `}` `]``}`` ``hct.streamlit_highcharts(chart_def,640) #640 is the chart height``#The component bundles some sample chart definitions, from SAMPLE1 to ...SAMPLE10``hct.streamlit_highcharts(hct.SAMPLE1,640) #640 is the chart height`
股票图代码展示实现如下:
import streamlit as st``import time``import streamlit_highcharts as hct``import akshare as ak``df = ak.stock_zh_a_daily(symbol="sh600519", adjust="qfq")``df["date"] = df["date"].astype(str)``df["date"] = df["date"].apply(lambda x: int(time.mktime(time.strptime(x,"%Y-%m-%d"))) * 1000)`` ``stock = df[['date', 'open', 'high', 'low', 'close']].values.tolist()``volume = df[['date', 'volume']].values.tolist()`` ``configuration = {` `"title": {"text": "AAPL stock price by minute"},` `"rangeSelector": {` `"buttons": [` `{"type": "hour", "count": 1, "text": "1h"},` `{"type": "day", "count": 1, "text": "1D"},` `{"type": "all", "count": 1, "text": "All"},` `],` `"selected": 1,` `"inputEnabled": False,` `},` `"series": [` `{"name": "AAPL", "type": "candlestick", "data": stock, "tooltip": {"valueDecimals": 2}}` `],``}``hct.streamlit_highcharts(configuration,640) #
参考内容如下:
[python_highchart]:https://stock-docs.highchartspython.com/en/
latest/using.html#working-with-highcharts-stock-features
[panel_highchart]:https://github.com/awesome-panel/panel-highcharts/blob/main/examples/reference/HighMap.ipynb
[NiceGUI]:https://nicegui.io/documentation
[JustPy]: https://justpy.io/charts_tutorial/stock_charts
题外话
当下这个大数据时代不掌握一门编程语言怎么跟的上脚本呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
