""" @author: luojunhui """ from pyecharts import options as opts from pyecharts.charts import Line, Page from pyecharts.globals import ThemeType import pandas as pd # Load the Excel file file_path = '/Users/luojunhui/Downloads/0708-ana数据.xlsx' df = pd.read_excel(file_path, sheet_name='Sheet1') df['日期'] = pd.to_datetime(df['日期']).dt.strftime('%Y-%m-%d') # Correct way to concatenate '模式类型' and '账号来源' with '-' df['账号来源'] = df.apply(lambda row: "{}-{}".format(row['模式类型'].replace('\n', ''), row['账号来源']), axis=1) print(df['账号来源']) # Pivot the data to get '小程序第一层人数/阅读量' for each '账号来源' over '日期' pivot_df = df.pivot(index='日期', columns='账号来源', values='小程序第一层人数/阅读量') # Create a line chart line = Line(init_opts=opts.InitOpts(theme=ThemeType.LIGHT, width="100%", height="600px")) line.add_xaxis(pivot_df.index.tolist()) # Add data for each product for product in pivot_df.columns: line.add_yaxis( product, pivot_df[product].tolist(), is_smooth=True, linestyle_opts=opts.LineStyleOpts(width=3), markline_opts=opts.MarkLineOpts( data=[ opts.MarkLineItem(x="2024-07-02", name="分割") ], label_opts=opts.LabelOpts(position="insideEndTop"), linestyle_opts=opts.LineStyleOpts(width=2, color="grey") ) ) # Set global options line.set_global_opts( title_opts=opts.TitleOpts(title="小程序打开率趋势", pos_left='center'), xaxis_opts=opts.AxisOpts(type_="category"), yaxis_opts=opts.AxisOpts(type_="value"), tooltip_opts=opts.TooltipOpts(trigger="axis"), # toolbox_opts=opts.ToolboxOpts(is_show=True, feature=opts.ToolBoxFeatureOpts(save_as_image={"is_show": True})), legend_opts=opts.LegendOpts( pos_bottom='0%', pos_left='center', orient='horizontal', textstyle_opts=opts.TextStyleOpts(font_size=12), selected_mode='single', ) ) # Render the chart to an HTML file line.render("product_trends.html") # Display the location of the rendered file print("Charts are rendered in 'product_trends.html'")