如何让SwiftUI中的一维条形图占满整个宽度?
问题描述
我的图表右侧存在一处突兀的空白间隙,希望让条形图占满整个宽度以消除空白区域。我尝试调整width参数但未能解决,不确定是否可行,恳请解答。

相关代码:
struct ViewStatus { var views: Double var status: String } struct ViewsChartView: View { let data: [ViewStatus] var body: some View { Chart(data, id: \.status) { BarMark( x: .value("Views", $0.views) ) .foregroundStyle(by: .value("Status", $0.status)) } } }
解决方案
SwiftUI的Chart默认会给坐标轴预留边距,要消除右侧空白,可通过以下方式处理:
自定义X轴范围:计算数据中的最大
views值,手动指定X轴的范围从0到这个最大值,让图表的X轴刚好覆盖数据区间,无额外留白。修改后的代码:struct ViewsChartView: View { let data: [ViewStatus] private var maxViews: Double { data.map(\.views).max() ?? 0 } var body: some View { Chart(data, id: \.status) { BarMark( x: .value("Views", $0.views) ) .foregroundStyle(by: .value("Status", $0.status)) } .chartXScale(domain: 0...maxViews) } }移除X轴边距:如果仍有空白,可通过
chartXAxis调整轴的内边距,彻底消除多余间隙:.chartXAxis { AxisMarks(position: .bottom) { value in AxisGridLine() AxisTick() AxisValueLabel() } .axisInsets(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)) }
核心原因是Chart默认会给轴添加 padding 防止内容溢出,手动指定domain能强制轴范围贴合数据,从而消除右侧空白。
内容的提问来源于stack exchange,提问作者timmypass17
相关产品推荐
相关产品推荐

