pandas、pyecharts绘制基金走势图-03

本文介绍如何使用PyEcharts库绘制基金的历史走势折线图,并在一个页面中展示多个基金的走势图。具体步骤包括:解析CSV文件获取基金代码及名称、调整数据顺序、设置图表样式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

绘制pyecharts表格:

  1. 需要使用折线图展示,需要了解pyecharts.charts.Line的使用,可以参考链接文章
  2. 在折线图上,对应的节点应该展示对应的横纵坐标的信息,参考这篇文章
  3. 尽可能在一个页面中展示多个基金的走势,使用了Page对象,参考文章在这里。

让我们来看下一下具体的实现:

def make_subplots(csv_data = [f'{dirname}/datas_320007.csv', f'{dirname}/datas_005063.csv']):
    """
    将基金走势折线图绘制在一个html页面
    :param csv_data: 数据源文件列表
    """
    logging.info('绘制折线图')
    # 使用日期标识页面名称
    time_ = datetime.now().strftime("%Y%m%d")
    table_name = '持有基金走势图-'+ time_

    page = Page()
    # 循环读取基金历史数据表,绘制折线图
    for csv in csv_data:
    	# 通过解析文件名,获取基金代码、名称
        basename_csv = os.path.basename(csv)
        function_code = basename_csv.split('_')[1].split('.')[0]
        function_name = fund_data.apiData(function_code)['name']
        logging.info(f'绘制{function_name}数据')
		
		# 因为获取的接口数据是按照时间倒序排列的,需要切换为正序
        df = pd.read_csv(csv)
        df = df.iloc[::-1] # 正序排列

		# 将pandas对象中的数据读取出来
        x_data = list(df['净值日期'])
        y_data = list(df['单位净值'])
        
        line = Line()
        # 设置折现图全局变量
        line.set_global_opts(
        	# 设置折线图数据标注
            tooltip_opts=opts.TooltipOpts(is_show=True, trigger="axis"),
			# 设置折现图标题
            title_opts=opts.TitleOpts(
                title=f'{function_name}({function_code})',
                title_textstyle_opts=opts.TextStyleOpts(
                    font_family='KaiTi',
                    font_size=24,
                    color='#FF1493'
                )
            ),
            # 设置x轴数值类型,名称
            xaxis_opts=opts.AxisOpts(
                type_="time",
                name='净值日期',
            ),
            # 设置y轴数值类型,名称
            yaxis_opts=opts.AxisOpts(
                type_="value",
                name='单位净值',
                min_ = min(y_data), max_= max(y_data),
                axistick_opts=opts.AxisTickOpts(is_show=True),
            )

        )
        # 添加x轴数据
        line.add_xaxis(xaxis_data=x_data)
        # 添加y轴数据
        line.add_yaxis(
            series_name="",
            y_axis=y_data,
            symbol="emptyCircle",
            is_symbol_show=True,
            # 默认不展示y轴数据
            label_opts=opts.LabelOpts(is_show=False),
        )

		# 将折线图添加到page对象
        page.add(line)
        
    logging.info(f'保存绘制图{table_name}')
    # 生成html页面
    page.render(f'{table_name}.html')
    page.render_embed()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值