pyecharts通过dataframe绘制多条曲线图

31 篇文章 3 订阅
17 篇文章 0 订阅

通常,我们需要根据一个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文件,打开后即可看到绘制结果:

在这里插入图片描述

使用右上角的工具箱可以变换曲线图的表现形式:
在这里插入图片描述

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

呆萌的代Ma

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

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

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

打赏作者

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

抵扣说明:

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

余额充值