python 如何在xlwings中创建组合/组合图表?

brccelvz  于 11个月前  发布在  Python
关注(0)|答案(1)|浏览(188)

我试图通过xlwings在excel中创建一个组合图表,但我无法做到这一点。在the documentation中,它说你可以将chart_type设置为'combination',但当运行代码时:

wb = xw.Book()
ws = wb.sheets['Sheet1']

chart = ws.charts.add()
chart.set_source_data(ws.range('B3:E4'))
chart.chart_type = 'combination'

字符串
其中范围B3:E4只是样本数据。我得到以下错误:
self.xl.ChartType = chart_types_s2i[chart_type]
KeyError:'combination'
有没有人能够成功地创建一个组合图表使用xlwings,将能够修复此代码或提供示例代码,为他们工作,而不是?

rkkpypqq

rkkpypqq1#

列表中的“combination”可能会引起误解。您可以看到这是如何使用Windows来完成的,两种图表类型被组合在一起。没有有效的图表类型称为“combination”。(深入查看xlwings代码,图表类型“combination”可能对MACOS有效,但对Windows无效)。
创建两个系列并将每个系列的图表类型添加到图表中。
在此示例中,聚集柱形图(xlColumntered,类型51)与折线图(xlLine,类型4)相结合。
此示例使用xlwings API,因此使用类似的命令来进行配置。ChartType编号来自“XlChartType enumeration”列表。这些编号位于xlwings常量“ChartType”类中,因此您可以导入常量并根据需要使用名称。

import xlwings as xw

with xw.App(visible=False) as app:
    wb = xw.Book()
    wb.sheets.add()
    ws = wb.sheets[0]

    # Add the worksheet data to be plotted.
    data_list = [
        ['Salesman', 'Net Sales', 'Target'],
        ['Wilham', 2600, 3500],
        ['Simon', 11500, 14000],
        ['Frank', 13500, 15000],
        ['Nathan', 17000, 19500],
        ['Jason', 5500, 7000],
        ['Anthony', 10000, 13500],
    ]
   
    ### Add data to Sheet from cell A1
    ws.range('A1').value = data_list

    ### Create new chart object 'chart1' and set positioning on sheet
    chart1 = ws.charts.add(left=350, top=10, width=520, height=380)

    ### Add Chart Series 1 and set type
    chart1.api[1].SeriesCollection().NewSeries()
    chart1.api[1].FullSeriesCollection(1).ChartType = 51  # xlColumnClustered

    ### Series 1 Data
    series1_x = ws.range('A2').expand("down")
    series1_y = ws.range('B2').expand("down")

    ### Add Series 1 data to Chart
    chart1.api[1].SeriesCollection(1).XValues = series1_x.api
    chart1.api[1].SeriesCollection(1).Values = series1_y.api
    chart1.api[1].FullSeriesCollection(1).Name = "Column Chart"

    ### Add Chart Series 2 and set type
    chart1.api[1].SeriesCollection().NewSeries()
    chart1.api[1].FullSeriesCollection(2).ChartType = 4  # xlLine

    ### Series 2 Data
    series2_x = ws.range('A2').expand("down")
    series2_y = ws.range('C2').expand("down")

    ### Add Series 2 data to Chart
    chart1.api[1].SeriesCollection(2).XValues = series2_x.api
    chart1.api[1].SeriesCollection(2).Values = series2_y.api
    chart1.api[1].FullSeriesCollection(2).Name = "Line Chart"

    wb.save('xlwings_combo_chart.xlsx')
    wb.close()

字符串
以上代码示例的输出
如果您在Excel中选择“更改图表类型”,它将被列为“组合图表”。


的数据

相关问题