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

问题描述 投票:0回答:2

我想使用 python-pptx 创建一个图表,其中值轴始终从 0 开始。从阅读文档看来,使用

crosses
crosses_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')
python powerpoint python-pptx
2个回答
2
投票

我相信您正在寻找的是

value_axis.minimum_scale = 0

默认情况下,不指定该值(返回

None
),表示“自动”。该设置将调整显示范围的最小值,以充分利用显示区域(根据某种算法)。

当您明确指定它时,显示范围的末端将被固定。

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

.crosses
.crosses_at
设置。


0
投票

顺便说一句,pptx Chart.value_axis 是默认获取最后一个系列轴。 如果你想设置前一个轴,你可以使用这里的代码。 ValueAxis(shape.chart._chartSpace.valAx_lst[0]) 0 是意甲 0 1 是意甲 1

© www.soinside.com 2019 - 2024. All rights reserved.