У меня есть этот фрейм данных, который содержит столбец даты, столбец суммы и столбец процентного значения. Хотите нарисовать график, в котором есть столбец даты для оси x, столбец суммы для оси y слева и столбец процента для оси y справа.
Я мог бы построить нижеприведенный код, чтобы нарисовать два графика и объединить в один , Но вторая ось y не отображается должным образом. И строки, относящиеся к процентным значениям, не отображаются. Я думаю, что это связано с проблемой масштабирования. Некоторая помощь будет принята с благодарностью, так как я не могу понять, почему вторая ось y не отображается, и значение следующих свойств.
updating_file = "D:\\Testing\\Pivot.xlsx"
wb = load_workbook(filename=updating_file, data_only=True)
sheet = wb["Sheet1"]
columns = next(sheet.values)[0:]
current_sheet_df = pd.DataFrame(sheet.values, columns=columns)
c1 = LineChart()
c1.title = None
c1.y_axis.title = None
c1.y_axis.crossAx = 500
c1.x_axis = DateAxis(crossAx=100)
c1.x_axis.number_format = 'd-mmm'
c1.x_axis.lblAlgn = 'l'
c1.x_axis.majorTimeUnit = "days"
c1.x_axis.title = "Date"
data1 = Reference(sheet, min_col=10, min_row=3, max_row=current_sheet_df.shape[0]+2)
data2 = Reference(sheet, min_col=14, min_row=3, max_row=current_sheet_df.shape[0]+2)
c1.add_data(data1, titles_from_data=True)
c1.add_data(data2, titles_from_data=True)
dates = Reference(sheet, min_col=9, min_row=4, max_row=current_sheet_df.shape[0]+2)
c1.set_categories(dates)
# Create a second chart
c2 = LineChart()
v2 = Reference(sheet, min_col=11, max_col=13, min_row=3, max_row=current_sheet_df.shape[0]+2)
c2.add_data(v2, titles_from_data=True)
c2.set_categories(dates)
# c2.y_axis.axId = 200
c2.y_axis.title = None
c2.x_axis = DateAxis(crossAx=100)
c2.x_axis.number_format = 'd-mmm'
c2.x_axis.lblAlgn = 'l'
c2.x_axis.majorTimeUnit = "days"
c2.x_axis.title = "Date"
c2.y_axis.majorGridlines = None
c1.y_axis.majorGridlines = None
# Display y-axis of the second chart on the right by setting it to cross the x-axis at its maximum
c1.y_axis.crosses = "min"
c2.y_axis.crosses = "max"
c1 += c2
c1.legend.position = 't'
# # Style the lines
s1 = c1.series[0]
s1.graphicalProperties.line.solidFill = "BDCDCD" # Marker outline
sheet.add_chart(c1, "Q20")
wb.save(filename=updating_file)
График, нарисованный с помощью приведенного выше кода, выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/QyWQk.png)
Хотите нарисовать что-то вроде ниже.
![enter image description here](https://i.stack.imgur.com/dKC2e.png)