Encountered "TypeError: integer argument expected, got float" while trying to plot a simple column chart

Encountered "TypeError: integer argument expected, got float" while trying to plot a simple column chart

我正在尝试使用 xlsxwriter 绘制一个简单的柱形图。以下是我为此编写的脚本:

import xlsxwriter

cmui = [456.0,424.08,114.0,22.8,22.8]
workbook = xlsxwriter.Workbook('first.xlsx')
worksheet = workbook.add_worksheet()
chart = workbook.add_chart({'type':'column'})
dec = workbook.add_format({'num_format':'#0.000000'})
bold = workbook.add_format()
bgc = workbook.add_format({'bold':'True'})
bgc.set_pattern(1)
bgc.set_bg_color("#DD8000")
chart.add_series({'values':cmui})
chart.set_title({'name':'Example'})
chart.set_y_axis({'name':'A'})
chart.set_x_axis({'name':'B'})
worksheet.insert_chart('A10',chart)
workbook.close()

当我尝试执行上述操作时,出现错误:

TypeError: integer argument expected, got float

这是可以理解的,因为我正在传递一个包含浮动类型值的列表。但这是否意味着我根本无法绘制浮点值,或者是否有解决方法?

使用set_num_format('0.00')

请参阅下面 link 中的示例:

http://xlsxwriter.readthedocs.org/format.html

你误会了。根据文档:

chart.add_series({
    'categories': '=Sheet1!$A:$A',
    'values':     '=Sheet1!$B:$B',
    'line':       {'color': 'red'},
})

# Or using a list of values instead of category/value formulas:
#     [sheetname, first_row, first_col, last_row, last_col]
chart.add_series({
    'categories': ['Sheet1', 0, 0, 4, 0],
    'values':     ['Sheet1', 0, 1, 4, 1],
    'line':       {'color': 'red'},
})

add_series() 函数接受电子表格单元格的坐标,而不是精确值,因此您需要将您的值插入电子表格,然后仅在 values 中指定它们的坐标。

chart.add_series() values 属性 不采用数据值列表,您应该将数据写入工作表并引用它。像这样:

worksheet.write_column('A1', cmui)
chart.add_series({'values': 'Sheet1!A1:A5'})

values 的列表参数用于指定范围维度,这样您就不必以编程方式生成 Excel 范围,例如 Sheet1!A1:A5:

chart.add_series({'values': ['Sheet1', 0, 0, 4, 0]})