在openpyxl图表上的轴文本方向

我从一个pandas数据框pyopenxl生成一个ScatterChart。

我正在尝试将X轴文本的旋转更改为270º,但是我找不到有关如何操作的文档。

这是生成图表的代码。

import numpy as np from openpyxl.chart import ScatterChart, Reference, Series from openpyxl.chart.axis import DateAxis import pandas as pd def generate_chart_proyeccion(writer_sheet, col_to_graph, start_row, end_row, title): """ Construct a new chart object :param writer_sheet: Worksheet were is data located :param col_to_graph: Column of data to be plotted :param start_row: Row where data starts :param end_row: Row where data ends :param title: Chart title :return: returns a chart object """ chart = ScatterChart() chart.title = title chart.x_axis.number_format = 'd-mmm HH:MM' chart.x_axis.majorTimeUnit = "days" chart.x_axis.title = "Date" chart.y_axis.title = "Value" chart.legend.position = "b" data = Reference(writer_sheet, min_col=col_to_graph, max_col=col_to_graph, min_row=start_row, max_row=end_row) 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 serie = Series(data, data_dates, title_from_data=True) chart.series.append(serie) return chart # Write data to excel writer = pd.ExcelWriter("file.xlsx", engine='openpyxl') df = pd.DataFrame(np.random.randn(10,1), columns=['Value'], index=pd.date_range('20130101',periods=10,freq='T')) start_row = 1 # Row to start writing df in excel df.to_excel(writer, sheet_name="Sheet1", startrow=start_row) end_row = start_row + len(df) # End of the data chart = generate_chart_proyeccion(writer.sheets["Sheet1"], 2, start_row, end_row, "A title") # Añado gráfico a excel writer.sheets["Sheet1"].add_chart(chart, "C2") writer.save() 

这是我得到的输出图表。

在这里输入图像说明

这是我想要的输出图表。

在这里输入图像说明

谢谢!

不幸的是,这并不像应该那样简单,因为在规范中,这是模式从SpreadsheetDrawingML改变到更为抽象的DrawingML的一个领域。 最好的办法是创build两个示例文件并进行比较。 在这种情况下,这种差异在于轴的txPrtextPropertiesrotrotation属性。 这在OOXML规范的第21.1.2.1.1节中有介绍。

下面的代码应该可以工作,但可能需要您创build一个TextProperties对象:

chart.x_axis.textProperties.bodyProperties.rot = -5400000