def _add_series(chart: ScatterChart, index: int, temperature_column: int, series_parameters: SeriesParameters, cycle: int = None): start_row = CALIBRATION_START_ROW end_row = series_parameters.last_row extra_point_indexes = [] if cycle is not None and series_parameters.extra_point_temperatures is not None: for temperature in series_parameters.extra_point_temperatures: for row_number in range(start_row, end_row+1): column_letter = get_column_letter(temperature_column) column = "{}{}".format(column_letter, row_number) excel_temperature = series_parameters.data_sheet[column].value if math.isclose(temperature, excel_temperature, abs_tol=.5): extra_point_indexes.append(row_number - 1) for i in extra_point_indexes: if i < 2: start_row += 1 else: end_row -= 1 x_values = Reference(series_parameters.data_sheet, min_col=temperature_column, min_row=start_row, max_row=end_row) y_values = Reference(series_parameters.data_sheet, min_col=series_parameters.indexes[index] + 1, min_row=start_row, max_row=end_row) series_title = series_parameters.sub_type.get_series_title(cycle) series = Series(xvalues=x_values, values=y_values, title=series_title) series.marker = marker.Marker(MARKERS[index % len(MARKERS)]) series.marker.size = 12 chart.series.append(series) return index + 1
def create_series_bake(self, x_values: Reference, y_values: Reference, index: int) -> Series: series = Series(values=y_values, xvalues=x_values, title=self.fbg_names[index]) rgb_percent = RGBPercent(*hex_to_rgb(index)) series.marker = marker.Marker(symbol=MARKERS[index % len(MARKERS)], spPr=GraphicalProperties(solidFill=ColorChoice(rgb_percent))) series.graphicalProperties.line.noFill = True return series
def copyToSheet(die, test): dieSheets = [] for sheet in range(len(clSheets)): if die.lower() in clSheets[sheet].lower() and test.lower( ) in clSheets[sheet].lower(): dieSheets.append(clSheets[sheet]) if len(dieSheets) > 0: print('Copying ' + die + ' ' + test) ws = lifetime.create_sheet(title=die + ' ' + test) pasteRow = 2 for sheet in range(len(dieSheets)): active = clWings.sheets[dieSheets[sheet]] for i in range(1, 22): for j in range(1, 3): ws.cell(row=i + pasteRow - 1, column=j).value = active.range( get_column_letter(j) + str(i + 32)).value pasteRow = pasteRow + 21 ws.cell(row=1, column=1).value = '[Cl2] (ppm)' ws.cell(row=1, column=2).value = 'Response (nA)' ws.cell(row=1, column=3).value = 'Calibration (nA)' ws.cell(row=1, column=5).value = 'Slope' ws.cell(row=2, column=5).value = 'Intercept' ws.cell( row=1, column=6).value = clWings.sheets[dieSheets[0]].range('B12').value ws.cell( row=2, column=6).value = clWings.sheets[dieSheets[0]].range('B13').value for i in range(2, ws.max_row): ws.cell(row=i, column=3).value = float(ws['F1'].value) * float( ws.cell(row=i, column=1).value) + float(ws['F2'].value) chart = ScatterChart() chart.title = str(die + ' ' + test + ' Lifetime (' + str(len(dieSheets)) + 'Calibrations)') chart.x_axis.title = '[Cl2] (ppm)' chart.y_axis.title = 'Response (nA)' xvalues = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row) roamValues = Reference(ws, min_col=2, min_row=1, max_row=ws.max_row) roamSeries = Series(roamValues, xvalues, title_from_data=True) calValues = Reference(ws, min_col=3, min_row=1, max_row=ws.max_row) calSeries = Series( calValues, xvalues, title_from_data=True, ) roamSeries.marker = openpyxl.chart.marker.Marker('x') roamSeries.graphicalProperties.line.noFill = True chart.series.append(roamSeries) chart.series.append(calSeries) cs.add_chart(chart, 'A' + str(len(lifetime.worksheets) * 15 - 29))
def plot_inside_excel(): wb = load_workbook(filename=saints_excel_name) # Active WorkSheet ws = wb.active chat1 = ScatterChart() # style = MinMax(allow_none=True, min=1, max=48) # chat1.style = 7 chat1.title = '2020 One Year Bible Study' chat1.x_axis.title = 'Date' chat1.y_axis.title = 'Time(o\'clock)' # set major/minor unit and max value of y axis chat1.y_axis.majorUnit = 1 chat1.y_axis.minorUnit = 1 chat1.y_axis.scaling.max = 24 chat1.y_axis.scaling.min = 0 # enlarge the chart, default is too small # width = 15 # in cm, approx 5 rows # height = 7.5 # in cm, approx 14 rows chat1.height = chat1.height + 8 chat1.width = chat1.width + 32 xvalues = Reference(ws, min_col=2, min_row=2, max_row=ws.max_row) for i in range(len(saint_name_list)): values = Reference(ws, min_col=8 + i, min_row=2, max_row=ws.max_row) series = Series(values, xvalues, title=saint_name_list[i], title_from_data=False) # {'triangle', 'dash', 'x', 'auto', 'diamond', 'circle', 'star', # 'picture', 'square', 'dot', 'plus'} series.marker = openpyxl.chart.marker.Marker('circle') series.graphicalProperties.line.noFill = True chat1.series.append(series) ws.add_chart(chat1, "A10") wb.save(filename=saints_excel_name)
ws1.cell(column=7, row=1, value="Phase(Degrees)") ws1.cell(column=8, row=1, value="Voltage Amplitude(V)") ws1.cell(column=9, row=1, value="Current Amplitude(A)") # Test done. Return to SVSC mode and switch Load off generator_api.Generator1SVSC(test_rail, 0, False) # save data to excel and plot Z vs F wb.save(filename=file_name) chart = ScatterChart() chart.title = "FDIM" chart.style = 6 chart.x_axis.title = 'Frequency (kHz)' chart.y_axis.title = 'Impedance (Ohms)' xvalues = Reference(ws1, min_col=5, min_row=2, max_row=Row) values = Reference(ws1, min_col=6, min_row=2, max_row=Row) series = Series(values, xvalues, title_from_data=False) chart.series.append(series) series.marker = openpyxl.chart.marker.Marker('circle') series.graphicalProperties.line.noFill = True ws1.add_chart(chart, "G2") wb.save(filename=file_name) print( "--------------------------------------------------------------------------------" ) print("") print("Test complete. Results exported to Excel")