def create_line(df, wb, sheet_name, startcol=0): df_columns = df.columns.tolist() ws = wb[sheet_name] # Chart with date axis chart = LineChart() chart.y_axis.title = 'intensity_of_emotion' chart.grouping = "standard" if sheet_name != 'max_by_resp': chart.title = sheet_name chart.x_axis.title = df_columns[1] chart.height = 15 chart.width = 30 data = Reference(ws, min_col=startcol + 3, min_row=1, max_col=len(df_columns) + startcol, max_row=len(df) + 1) chart.add_data(data, titles_from_data=True) episodes = Reference(ws, min_col=startcol + 2, min_row=2, max_row=len(df) + 1) else: chart.height = 10 chart.width = 20 chart.title = df.at[0, 'user_id'] chart.x_axis.title = df_columns[2] data = Reference(ws, min_col=startcol + 4, min_row=1, max_col=startcol + len(df_columns), max_row=len(df) + 1) chart.add_data(data, titles_from_data=True) episodes = Reference(ws, min_col=startcol + 3, min_row=2, max_row=len(df) + 1) chart.set_categories(episodes) for i in chart.series: i.smooth = True letter = get_column_letter(startcol + 1) ws.add_chart(chart, f"{letter}{len(df) + 3}")
from openpyxl import Workbook from openpyxl.chart import LineChart, Reference wb = Workbook() ws = wb.active df = pd.read_csv('monthly_sales.csv') ws.append(df.columns.tolist()) for row in df.values: ws.append(list(row)) row_length = 1 + len(df.values) data = Reference(ws, min_col=2, max_col=4, min_row=1, max_row=row_length) categories = Reference(ws, min_col=1, min_row=2, max_row=row_length) chart = LineChart() chart.grouping = 'stacked' chart.overlap = 100 chart.title = '月別売り上げ' chart.y_axis.title = '売上' chart.add_data(data, titles_from_data=True) chart.set_categories(categories) percent_stacked = deepcopy(chart) percent_stacked.grouping = 'percentStacked' percent_stacked.title = '月別売り上げ (100%積み上げ)' ws.add_chart(chart, 'A9') ws.add_chart(percent_stacked, 'A25') wb.save('monthly_sales_line.xlsx')