通常,我们需要根据一个dataframe来绘制一些图像,这篇博客就使用pyechart解决这个问题
基本常用到的内容都会在示例代码中,如果有不需要的地方,直接注释掉就可以
pyechart 图像案例:https://gallery.pyecharts.org/#/README
更多pyechart的参考资料请参考:pyechart图像示例与细节修改资料
示例代码
import pyecharts.options as opts
from pyecharts.charts import Line
import pandas as pd
import numpy as np
def plot_cumulative_returns(dataframe: pd.DataFrame):
"""绘图:曲线图
:param dataframe: 绘图用的dataframe, 每一行是一个时间点,每一列是一个标的
"""
line_plot = Line(init_opts=opts.InitOpts(width="1400px", height="800px"))
line_plot.add_xaxis(xaxis_data=dataframe.index.strftime("%Y-%m-%d").values.tolist())
for col_name, col_series in dataframe.iteritems(): # 循环绘制dataframe的曲线
line_plot.add_yaxis(
series_name=col_name,
y_axis=col_series,
linestyle_opts=opts.LineStyleOpts(width=2, type_='solid'),
label_opts=opts.LabelOpts(is_show=False), # 不显示坐标值
is_symbol_show=False, # 不显示小圆圈
)
# 设置全局样式
line_plot.set_global_opts(
title_opts=opts.TitleOpts(title="标题", pos_left="center"), # 设置标题
legend_opts=opts.LegendOpts(pos_left="center", pos_top="8%"), # 设置图例
xaxis_opts=opts.AxisOpts(name="时间", # X轴设置
splitarea_opts=opts.SplitLineOpts(is_show=True), ), # 设置横坐标代表的含义
yaxis_opts=opts.AxisOpts( # y轴设置
type_="value",
name="y轴",
splitline_opts=opts.SplitLineOpts(is_show=False),
is_scale=True,
),
# 添加工具箱
toolbox_opts=opts.ToolboxOpts(is_show=True),
# X坐标滚动的轴
datazoom_opts=opts.DataZoomOpts(
is_show=True,
# start_value="2020-04-01",
range_start=50,
range_end=None,
pos_bottom=-2,
),
)
# 每个图形的样式
line_plot.set_series_opts(
markline_opts=opts.MarkLineOpts( # 标记线数据
data=[
opts.MarkLineItem(type_="min", name="最小值"),
opts.MarkLineItem(type_="max", name="最大值"),
],
label_opts=opts.LabelOpts(),
)
)
line_plot.render("绘制曲线.html")
def main():
data = np.cumsum(np.random.normal(size=(200, 6)), axis=0)
plot_df = pd.DataFrame(data, index=pd.date_range(start="20200101", periods=200, freq="D"),
columns=["line_{}".format(i) for i in range(data.shape[1])])
plot_cumulative_returns(plot_df)
if __name__ == '__main__':
main()
运行完成后,会在本地保存一个文件绘制曲线.html
文件,打开后即可看到绘制结果:
使用右上角的工具箱可以变换曲线图的表现形式: