pyecharts可视化作图1:基金净值-折线图

   近期,接触到pyecharts模块,感觉其在可视化作图上比较强大,虽然无法和前端页面相比,但对于基础的数据展示,可以轻松处理。

   本期主要以基金净值走势为案例,绘制相应的折线图,由于该模块较为简单,多练即可上手,因此只在代码中做一些基础的备注。

1. 源代码

  基本流程如下:

1. 导入作图所需数据。

2. 选择作图类型,传入所需的一些自由参数。

3. 导入数据,作出基本的图形。

4. 添加标题和控件,优化图形效果。

from pyecharts import options as opts
from pyecharts.charts import Line
from pyecharts.globals import ThemeType
import pandas as pd

# 基础数据--虚拟
nav_dict = {'日期': {0: '2023-08-01', 1: '2023-08-02', 2: '2023-08-03', 3: '2023-08-04', 4: '2023-08-07',
                   5: '2023-08-08', 6: '2023-08-09', 7: '2023-08-10', 8: '2023-08-11', 9: '2023-08-14',
                   10: '2023-08-15', 11: '2023-08-16', 12: '2023-08-17', 13: '2023-08-18',
                   14: '2023-08-21', 15: '2023-08-22', 16: '2023-08-23',
                   17: '2023-08-24', 18: '2023-08-25', 19: '2023-08-28'},
            '基金': {0: 1.0, 1: 1.0, 2: 0.9967, 3: 0.9989, 4: 0.9967, 5: 1.0,
                   6: 1.0022, 7: 0.9967, 8: 0.99, 9: 0.9922, 10: 0.9877, 11:
                       0.9788, 12: 0.9967, 13: 0.9933, 14: 0.9811, 15: 0.9911,
                   16: 0.9755, 17: 0.98, 18: 0.9744, 19: 0.9777},
            '基准': {0: 1.0, 1: 0.993, 2: 1.0017, 3: 1.0056, 4: 0.998,
                   5: 0.9954, 6: 0.9924, 7: 0.9944, 8: 0.9715, 9: 0.9645,
                   10: 0.9621, 11: 0.9551, 12: 0.9583, 13: 0.9465,
                   14: 0.9329, 15: 0.94, 16: 0.9246, 17: 0.9313, 18: 0.9278, 19: 0.9386}}
# 数据转换为DataFrame
nav_data = pd.DataFrame(nav_dict)


def set_y_axis(data):
    # 设置y轴的坐标,输入序列值
    y_max, y_min = data.max() * 1.08, data.min() * 0.92
    return round(y_max, 4), round(y_min, 4)


# 设置图的形式,并设置背景风格和大小
# line-折线图,opts.InitOpts-传入参数
# theme-风格,width-宽度,height-高度
line = Line(init_opts=opts.InitOpts(theme=ThemeType.LIGHT, width="1200px", height="500px"))
# 添加x轴数据
line.add_xaxis(nav_data['日期'].tolist())
# 添加y轴数据和标签,同时标记净值的最大值和最小值,均值
# markpoint_opts--标记点
# markline_opts--标记线
# is_symbol_show是否展示数据标签,False为不显示
line.add_yaxis('基金', nav_data['基金'].tolist(),
               is_symbol_show=True,
               markpoint_opts=opts.MarkPointOpts(
                   data=[opts.MarkPointItem(type_="min", name="最小值"),
                         opts.MarkPointItem(type_="max", name="最大值")]),
               markline_opts=opts.MarkLineOpts(
                   data=[opts.MarkLineItem(type_="average", name="平均值")],
               ),
               )
line.add_yaxis('基准', nav_data['基准'].tolist(), is_symbol_show=True)

# 设置标题和副标题并条件x轴的坐标可移动控件,设置y轴的间隔
# datazoom_opts-坐标轴控件,不传参默认X轴
# yaxis_opts-y轴设置最大值,最小值和间距

y_max, y_min = set_y_axis(nav_data['基金'])
line.set_global_opts(title_opts=opts.TitleOpts(title="净值走势图", subtitle="数据为虚拟数据"),
                     datazoom_opts=[opts.DataZoomOpts()],
                     yaxis_opts=opts.AxisOpts(max_=y_max, min_=y_min, interval=0.02)
 )
# 数据保存为html
line.render("净值折线图.html")

2. 效果展示

     最终的结果可在网页上展示,横轴可以调整时间区间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值