python-pptx:设置图表的数值轴在 0 处交叉

python-pptx: Set the value axis of a chart to cross at 0

我想使用 python-pptx 创建一个图表,其中值轴始终从 0 开始。从阅读文档看来,这应该可以使用 crossescrosses_at 二传手。但是,当我使用下面的代码尝试此操作时,值轴仍然从 314 开始。我是否误解了这里的 api 还是这是一个错误?

from pptx import Presentation
from pptx.enum.chart import XL_AXIS_CROSSES
from pptx.chart.data import CategoryChartData
from pptx.util import Inches
from pptx.enum.chart import XL_CHART_TYPE


prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])

chart_data = CategoryChartData()
chart_data.categories = ['East', 'West', 'Midwest']
chart_data.add_series('Series 1', (319.2, 321.4, 316.7))
x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
graphic_frame = slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data)
chart = graphic_frame.chart

value_axis = chart.value_axis
value_axis.crosses = XL_AXIS_CROSSES.CUSTOM
value_axis.crosses_at = 0  # always start value axis at 0

prs.save('demo.pptx')

我相信你要找的是value_axis.minimum_scale = 0

默认情况下,不指定此值(returns None),表示“自动”。该设置将调整显示范围的最小值以充分利用显示区域(根据某种算法)。

当您明确指定时,显示范围的末尾会固定。

类别轴在最小显示值处交叉是默认行为,因此在这种情况下您不需要 .crosses.crosses_at 设置。