You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift调用Objective-C实现Core Plot柱状图无法固定柱宽如何解决

解决方案

你遇到的柱状条首尾宽度不一致是Core Plot柱状图的常见问题,核心原因是X轴默认范围没有给首尾柱子预留足够的绘制空间,且没有显式固定柱宽,导致首尾柱子被边缘挤压显示不全。你可以按以下步骤修改:

1. 显式固定柱宽

你使用的封装LCPlot类、以及原生Core Plot的CPTBarPlot都支持直接设置固定柱宽,在添加plot的代码段加入柱宽配置即可:

let plot1 = LCPlot()
plot1.data = randomData(for: 3)
plot1.fillColor = UIColor(red: 0.98, green: 0.59, blue: 0.07, alpha: 1.00)
// 新增:设置固定柱宽,数值为X轴坐标单位下的宽度,0.8代表每个柱子占0.8个X轴单位,剩下0.2为间隙
plot1.barWidth = 0.8
a.add(plot1)

如果你的LCPlot没有暴露barWidth属性,找到内部封装的CPTBarPlot实例,设置barPlot.barWidth = NSNumber(floatLiteral: 0.8)即可。

2. 调整X轴范围预留边距

你当前X轴标签索引是0~11共12个刻度,需要把X轴的全局范围设置为-0.5 ~ 11.5,给首尾柱子各留半个柱宽的绘制空间,避免被边缘裁切:
如果是原生Core Plot,配置绘图空间的代码如下:

let plotSpace = a.graph.defaultPlotSpace as! CPTXYPlotSpace
plotSpace.xRange = CPTPlotRange(location: NSNumber(value: -0.5), length: NSNumber(value: 12))

如果你用的LCChart封装有X范围接口,直接设置对应参数即可,也可以通过增加X轴左右边距实现同样效果,不要把全局padding设为0后完全不留边:

// 把原来的a.padding = 0 改为区分边距设置,给X轴左右预留边距
a.padding = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)

按以上两步修改后所有柱状条的宽度就会完全一致。


内容的提问来源于stack exchange,提问作者OhStack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:18:02