我试图在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)
我希望图形显示为对数,但仍显示为线性。
答案 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()
输出:
您可以看到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)