python-pptx:设置图表的数值轴在 0 处交叉
python-pptx: Set the value axis of a chart to cross at 0
我想使用 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')
我相信你要找的是value_axis.minimum_scale = 0
。
默认情况下,不指定此值(returns None
),表示“自动”。该设置将调整显示范围的最小值以充分利用显示区域(根据某种算法)。
当您明确指定时,显示范围的末尾会固定。
类别轴在最小显示值处交叉是默认行为,因此在这种情况下您不需要 .crosses
或 .crosses_at
设置。
我想使用 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')
我相信你要找的是value_axis.minimum_scale = 0
。
默认情况下,不指定此值(returns None
),表示“自动”。该设置将调整显示范围的最小值以充分利用显示区域(根据某种算法)。
当您明确指定时,显示范围的末尾会固定。
类别轴在最小显示值处交叉是默认行为,因此在这种情况下您不需要 .crosses
或 .crosses_at
设置。