绘制pyecharts表格:
- 需要使用折线图展示,需要了解pyecharts.charts.Line的使用,可以参考链接文章。
- 在折线图上,对应的节点应该展示对应的横纵坐标的信息,参考这篇文章。
- 尽可能在一个页面中展示多个基金的走势,使用了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()