幕布斯6054654
2022-04-27 15:57:08
我有一個預先構建和填充的 powerpoint 演示文稿,我正在修改圖表和表格的數據。我想保留所有格式(和大部分文本),但替換幻燈片中折線圖中的數據。我有一個函數將使用與條形圖一起使用的 pandas 數據框替換數據。def replaceCategoryChart(df, chart, skipLastCol=0): """ Replaces Category chartdata for a simple series chart. e.g. Nonfarm Employment Parameters: df: dataframe containing new data. column 0 is the categories chart: the powerpoint shape chart. skipLast: 0=don't skip last column, 1+ will skip that many columns from the end Returns: replaced chart(?) """ cols1= list(df) #print(cols1) #create chart data object chart_data = CategoryChartData() #create categories chart_data.categories=df[cols1[0]] # Loop over all series for col in cols1[1:-skipLastCol]: chart_data.add_series(col, df[col]) #replace chart data chart.replace_data(chart_data)...S0_L= pd.read_excel(EXCEL_BOOK, sheet_name="S0_L", usecols="A:F")S0_L_chart = prs.slides[0].shapes[3].chartprint(S0_L)replaceCategoryChart(S0_L, S0_L_chart)...python 文件成功運行,但是,當我打開 powerpoint 文件時出現錯誤Powerpoint found a problem with content in Name.pptx. Powerpoint can attempt to repair the presentation.If you trust the source of this presentation, click Repair.點擊修復后,我試圖修改的幻燈片被空白布局替換。因為此函數適用于條形圖,所以我認為我理解如何將 replace_data() 用于折線圖的方式存在錯誤。感謝您的幫助!
2 回答

人到中年有點甜
TA貢獻1895條經驗 獲得超7個贊
如果您的“折線圖”是“XY 散點圖”圖表,您將需要不同的圖表數據對象、XyChartData
對象,然后填充其XySeries
對象:https ://python-pptx.readthedocs.io/en/latest/ api/chart-data.html#pptx.chart.data.XyChartData
我建議首先使用文字值(例如“South”和 )使其工作1.05
,然后繼續提供來自 Pandas 數據幀的值。這樣你就可以確定python-pptx
你的代碼部分結構正確,并且你會知道去哪里尋找出現的任何問題。

白衣染霜花
TA貢獻1796條經驗 獲得超10個贊
正如scanny 提到的,replace_data() 確實適用于類別折線圖。
修復錯誤(可能)是由錯誤地添加系列數據引起的,(有一個壞循環,在下面更正)。
# Loop over all series
for col in cols1[1:len(cols1)-skipLastCol]:
print('Type of column is ' + str(type(col)))
chart_data.add_series(col, df[col])
添加回答
舉報
0/150
提交
取消