如何在python中使用xlsxwriter创建log(x)图?

时间:2019-06-17 14:44:59

标签: python excel xlsxwriter

我试图在xksxwriter中创建一个log(x)图,我正在使用“ chart1.set_x_axis({'log_base':10})”将x轴设置为对数轴。但是,该图在两个轴上仍显示为线性。

这是我设置图形属性的部分

chart1.set_x_axis({'log_base': 10})
chart1.set_x_axis({'min': 1000, 'max': 100000})
chart1.set_x_axis({'interval_tick': 100})
chart1.set_x_axis({'name': 'x axis'})

chart1.set_y_axis({'min': 0, 'max': 180})
chart1.set_y_axis({'name': 'y axis'})
chart1.set_size({'width': 1192, 'height': 729})
chart1.set_title({'name': 'log(x) vs. y'})
worksheet2.insert_chart('A1', chart1)

我希望图形显示为对数,但仍显示为线性。

2 个答案:

答案 0 :(得分:0)

下面是一个示例,该示例演示了日志轴可用于XlsxWriter图表:

import xlsxwriter

workbook = xlsxwriter.Workbook('log_demo.xlsx')
worksheet = workbook.add_worksheet()

worksheet.write_column('A1', [1, 10, 100, 1000])

chart = workbook.add_chart({'type': 'line'})
chart.add_series({'values': '=Sheet1!$A$1:$A$4'})
chart.set_y_axis({'log_base': 10})

worksheet.insert_chart('C2', chart)

workbook.close()

输出:

enter image description here

您可以看到Y轴显然是对数刻度。

但是,这里有一个Excel陷阱。除散点图外,大多数图表类型的X轴称为类别轴。它们可以有数字值,但不是数字,它们通常只是类别名称。这种类型的轴不支持对数缩放(或许多其他功能)。有关更多详细信息,请参见XlsxWriter文档的Chart Value and Category Axes部分。

如果要使用对数X轴,则可能必须使用散点图。

更新

您的代码也有问题。 XlsxWriter要求一次性设置所有轴属性,而不是多次调用set_x_axis()。像这样:

chart1.set_x_axis({'log_base': 10,
                   'min': 1000, 
                   'max': 100000,
                   'interval_tick': 100,
                   'name': 'x axis'})

答案 1 :(得分:0)

结果证明必须将set_x_axis行重新排序为这样:

chart1.set_x_axis({'min': 1000, 'max': 100000})
chart1.set_x_axis({'interval_tick': 100})
chart1.set_x_axis({'log_base': 10})
chart1.set_x_axis({'name': 'x axis'})

chart1.set_y_axis({'min': 0, 'max': 180})
chart1.set_y_axis({'name': 'y axis'})
chart1.set_size({'width': 1192, 'height': 729})
chart1.set_title({'name': 'log(x) vs. y'})
worksheet2.insert_chart('A1', chart1)