跳转至

chartspy

帮助用户在python环境使用echarts g2plot KLineChart 绘图

不同于pyecharts,不对echarts 概念和属性进行python映射和二次抽象,保证库不依赖于特定echarts版本

  • 实现了 python配置<=>JavaScript配置的双向互转

  • 同时借鉴plotly.express 封装了简单图表类型可视化函数

使用说明

简单模式

直接选择合适的图表类型,展示DataFrame

from chartspy import *

express.scatter_echarts(df, x_field='数量', y_field='价格', size_field='数量', size_max=50, height='250px',
                        title='scatter')

express.pie_echarts(df, name_field='水果', value_field='数量', rose_type='area', title="pie2", height='350px')

express.candlestick_echarts(df, left_padding='5%', mas=[5, 10, 30], title='平安银行')

scatter

line

kline

高级模式

同js写法

同js写法,只是js 函数要包裹下Js("""function(){}"""),库会自动转换python类型到对应的js类型 手工书写,参考 echarts配置手册 g2plot官方文档

from chartspy import *

# Echarts
options = {
    'xAxis': {},
    'yAxis': {},
    'series': [{
        'symbolSize': 20,
        'data': [
            [10.0, 8.04],
            [8.07, 6.95],
            [13.0, 7.58],
            [9.05, 8.81],
            [11.0, 8.33]
        ],
        'type': 'scatter'
    }]
}
Echarts(options, height='600px').render_notebook()
from chartspy import *

# G2PLOT
df = ...
# Echarts
options = {
    'xField': 'time',
    'yField': 'close'
}
G2PLOT(df, plot_type='Line', options=options).render_notebook()
from chartspy import KlineCharts
import tushare as ts

df = ts.pro_bar(ts_code="000001.SZ", adj='qfq')
df.rename(columns={'trade_date': 'timestamp', 'vol': 'volume'}, inplace=True)
KlineCharts(df, main_indicators=['MA', 'SAR'], mas=[5, 10, 30, 60, 120, 250])

半自动JavaScript配置->Python配置

半自动,从echarts示例 拷贝js配置,自动生成对应的python配置

convert_js_to_dict(js_str,print_dict=True) 会在控制台打印python 配置, 方便拷贝粘贴后进行二次加工

from chartspy import *

js_str = """
{
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line',
        smooth: true
    }]
}
"""
options = Tools.convert_js_to_dict(js_str, print_dict=False)
Echarts(options, height='300px', width='300px').render_notebook()