Advertisement
CAROJASQ

Excel chart

May 5th, 2017
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.73 KB | None | 0 0
  1. import numpy as np
  2. from openpyxl.chart import ScatterChart, Reference, Series
  3. from openpyxl.chart.axis import DateAxis
  4. import pandas as pd
  5.  
  6.  
  7. def generate_chart_proyeccion(writer_sheet, col_to_graph, start_row, end_row, title):
  8.     """
  9.    Construct a new chart object
  10.  
  11.    :param writer_sheet: Worksheet were is data located
  12.    :param col_to_graph: Column of data to be plotted
  13.    :param start_row: Row where data starts
  14.    :param end_row: Row where data ends
  15.    :param title: Chart title
  16.    :return: returns a chart object
  17.    """
  18.     chart = ScatterChart()
  19.     chart.title = title
  20.     # chart.x_axis = DateAxis(crossAx=100)
  21.     chart.x_axis.number_format = 'd-mmm HH:MM'
  22.     chart.x_axis.majorTimeUnit = "days"
  23.     chart.x_axis.title = "Fecha"
  24.     chart.y_axis.title = "Valor"
  25.     chart.legend.position = "b"
  26.     chart.width = 5
  27.     data = Reference(writer_sheet, min_col=col_to_graph, max_col=col_to_graph, min_row=start_row, max_row=end_row)
  28.     data_dates = Reference(writer_sheet, min_col=1, max_col=1, min_row=start_row, max_row=end_row) # Corresponde a la columna con la fecha
  29.     serie = Series(data, data_dates, title_from_data=True)
  30.     chart.series.append(serie)
  31.     return chart
  32.    
  33. # Escribo datos en excel
  34. writer = pd.ExcelWriter("archivo.xlsx", engine='openpyxl')
  35. df = pd.DataFrame(np.random.randn(1000,1), columns=['Dato'], index=pd.date_range('20130101',periods=1000,freq='T'))
  36. df.to_excel(writer, sheet_name="Sheet1", startrow=start_row)
  37. start_row = 1 # En que fila empezar a escribir en excel
  38. end_row = start_row + len(df)
  39. chart = generate_chart_proyeccion(writer.sheets["Sheet1"], 2, start_row, end_row, "A title")
  40. # Añado gráfico a excel
  41. writer.sheets["Sheet1"].add_chart(chart, "C2")  
  42. writer.save()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement