pyecharts绘制K线图,并添加辅助线

官方示例可以参考:https://gallery.pyecharts.org/#/Candlestick/kline_datazoom_slider

绘制K线图

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Kline


def get_file_df(start_date="2020-01-01", end_date="2021-01-01"):
	"""获取K线数据"""
    file_df = pd.read_pickle("000001.pkl")
    file_df.index = pd.to_datetime(file_df['日期'])
    file_df = file_df.iloc[:, :7]
    file_df.columns = ['date', 'open', 'close', 'high', 'low', 'volume', 'turnover']
    file_df = file_df.drop(["date"], axis=1)
    file_df = file_df.sort_index().truncate(before=start_date, after=end_date)
    return file_df


def draw_kline(k_dataframe: pd.DataFrame):
    kline_chart = Kline(init_opts=opts.InitOpts(width="1700px", height="750px"))
    kline_chart.add_xaxis(xaxis_data=k_dataframe.index.strftime("%Y-%m-%d").tolist())
    kline_chart.add_yaxis("K线", y_axis=k_dataframe[['open', "close", "low", "high"]].values.tolist())
    kline_chart.set_global_opts(
        xaxis_opts=opts.AxisOpts(is_scale=True),
        yaxis_opts=opts.AxisOpts(
            is_scale=True,
            splitarea_opts=opts.SplitAreaOpts(
                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
            ),
        ),
        datazoom_opts=[opts.DataZoomOpts()],
        title_opts=opts.TitleOpts(title="k线图"),
    )
    kline_chart.render("save_kline.html")


def main():
    file_df: pd.DataFrame = get_file_df()  # 数据源
    draw_kline(k_dataframe=file_df)


if __name__ == '__main__':
    main()

其中K线数据样例:
在这里插入图片描述

最终保存下来的效果图如下:

在这里插入图片描述

绘制有辅助线的K线图

代码如下:

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Kline, Line


def get_file_df(start_date="2020-01-01", end_date="2021-01-01"):
    file_df = pd.read_pickle("000001.pkl")
    file_df.index = pd.to_datetime(file_df['日期'])
    file_df = file_df.iloc[:, :7]
    file_df.columns = ['date', 'open', 'close', 'high', 'low', 'volume', 'turnover']
    file_df = file_df.drop(["date"], axis=1)
    file_df = file_df.sort_index().truncate(before=start_date, after=end_date)
    return file_df


def draw_kline(k_dataframe: pd.DataFrame, same_axis_feature: list = None):
    x_value = k_dataframe.index.strftime("%Y-%m-%d").tolist()
    kline_chart = Kline(init_opts=opts.InitOpts(width="1700px", height="750px"))
    kline_chart.add_xaxis(xaxis_data=x_value)
    kline_chart.add_yaxis("K线", y_axis=k_dataframe[['open', "close", "low", "high"]].values.tolist())
    kline_chart.set_global_opts(
        xaxis_opts=opts.AxisOpts(is_scale=True),
        yaxis_opts=opts.AxisOpts(
            is_scale=True,
            splitarea_opts=opts.SplitAreaOpts(
                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
            ),
        ),
        datazoom_opts=[opts.DataZoomOpts()],
        title_opts=opts.TitleOpts(title="k线图"),
    )
    # 添加同价格的辅助线
    for _index, _feature_name in enumerate(same_axis_feature):
        this_line = Line().add_xaxis(x_value).add_yaxis(_feature_name, k_dataframe[_feature_name], yaxis_index=0)
        this_line.set_series_opts(
            label_opts=opts.LabelOpts(is_show=False),
            linestyle_opts=opts.LineStyleOpts(width=4),
        )
        kline_chart.overlap(this_line)
    kline_chart.render("save_kline.html")


def main():
    file_df: pd.DataFrame = get_file_df()  # 数据源
    file_df['mean_high_close'] = (file_df['high'] + file_df['low']) / 2
    draw_kline(file_df, ["mean_high_close"])


if __name__ == '__main__':
    main()

如图,同样的价格因素(最高价与最低价的均值)被传递到图中,辅助我们看图,其他折线同理所示

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值