openpyxl - x和y轴刻度值的增量

3
我正在创建的柱状图自动缩放Y轴刻度增量,从0开始为0, .5, 1, 1.5等。我希望它只以整数递增,即0, 1, 2, 3, 4等。我尝试过chart.y_axis.tickLblSkip = 1,但我对此有所怀疑,因为我认为这只是标签本身,而不是实际的刻度线。有办法控制这个吗?我在文档中看到可以使用chart.y_axis.scaling.minmax来控制轴的整体比例,但这不是我想要的。
以下是用于生成我的图表的代码。下面是图表本身,您可以看到Y轴刻度,因为“唯一工作”只能是整数,所以有小数很难看:
# Unique jobs chart
chart = BarChart()
chart.type = 'col'
chart.style = 13
chart.title = 'Unique Job Numbers Run'
chart.y_axis.title = 'Total Number of Parts'
chart.x_axis.title = 'Machine Number'
chart.legend = None
data = Reference(yearly_machine_totals_ws, min_col=4, min_row=1,
                 max_row=yearly_machine_totals_ws.max_row, max_col=4)
cats = Reference(yearly_machine_totals_ws, min_col=1, min_row=2,
                 max_row=yearly_machine_totals_ws.max_row)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
chart_ws.add_chart(chart, 'L2')

enter image description here

1个回答

2
您的图表中的y_axis类型为NumericAxis。要实现您想要的效果,需要定义其majorUnit属性:
chart.y_axis.majorUnit = 1

你如何知道某种类型的图表或轴有哪些属性可用? 您需要找出已实现的内容。您的图表是BarChart类型。检查 BarChart文档可以得知其x轴为TextAxis类型,而y轴为NumericAxis类型。 所有轴类型的功能都在此处记录。 显然,tickLblSkip属性仅存在于TextAxisSeriesAxis中。对于NumericAxis,您将需要unit属性,可能minmax也很有用。

确定任何对象类型的简单交互式方式是type()方法。放入即可。

print(type(chart.y_axis))

在你的代码中会方便地显示出:
<class 'openpyxl.chart.axis.NumericAxis'>

太感谢了,我实际需要的是 chart.y_axis.majorUnit = 1。不过你指出了正确的方向,我之前不知道有 NumericAxis 这个东西,也不知道可以用 type 来检查它。这帮助我在文档中找到了我需要的内容。请修改你的回答,我会接受它的。谢谢! - Chris Macaluso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接