簡體   English   中英

openpyxl 圖表上的軸文本方向

[英]Axis text orientation on openpyxl chart

我正在使用 pyopenxl 從 pandas dataframe 生成散點圖。

我試圖將 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()

這是我得到的 output 圖表。

在此處輸入圖像描述

這是我要的output圖表。

在此處輸入圖像描述

謝謝!

遺憾的是,這並不像應該這么簡單,因為在規范中,這是架構從SpreadsheetDrawingML更改為DrawingML的區域之一,這更加抽象。 最好的辦法是創建兩個示例文件並進行比較。 在這種情況下,這個差異在於txPr rotrotation屬性或軸的textProperties 這在OOXML規范的第21.1.2.1.1節中有所涉及。

以下代碼應該可以使用,但可能需要您創建TextProperties對象:

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

我有同樣的問題 - @oldhumble 的這篇 SO 帖子為我解決了它 - 請參閱使用 openpyxl 旋轉 excel 圖表的軸

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM