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

SwiftUICharts条形图颜色无法修改问题求助

问题:SwiftUICharts 条形图颜色设置不生效

我正在开发一款带图表功能的watchOS应用,由于需要兼容至watchOS 7,而系统自带的Swift Charts仅支持watchOS 9及以上版本,因此选用了第三方库SwiftUICharts。目前已成功实现图表展示并完成部分自定义,但遇到一个问题:无法修改条形图的颜色。

我设置条形图为紫色,但实际显示为红色,且我的应用中并未使用过红色。以下是简化后的代码示例:

struct ChartView: View {
  var items: [TimeEntry] = [
    TimeEntry(dateString: "01/23/2023", entry: 97, timestamp: Date().millisecondsSince1970)]
  
  var body: some View {
    let chartData = makeData(items)
    BarChart(chartData: chartData)
      .touchOverlay(chartData: chartData)
      .padding()
  }

  private func makeData(_ items: [TimeEntry]) -> BarChartData {
    var data: [BarChartDataPoint] = [BarChartDataPoint]()
      for item in items {
        let stat = BarChartDataPoint(
          value: Double(item.entry),
          xAxisLabel: "Wed",
          date: Date(milliseconds: item.timestamp),
          colour: ColourStyle(colour: Color.purple)
        )
        data.append(stat)
      }
      let dataSet = BarDataSet(dataPoints: data)
      return BarChartData(dataSets: dataSet)
  }
}

附带图表截图:
条形图显示红色的截图


问题原因及解决方法

SwiftUICharts中,BarDataSet会默认使用自身的颜色设置覆盖单个BarChartDataPoint的颜色配置,这就是你设置了紫色却显示红色(库默认颜色)的原因。

解决方法1:给BarDataSet统一设置颜色

修改makeData方法,在创建BarDataSet时指定颜色样式,这样整个数据集的条形都会使用该颜色:

private func makeData(_ items: [TimeEntry]) -> BarChartData {
  var data: [BarChartDataPoint] = [BarChartDataPoint]()
    for item in items {
      let stat = BarChartDataPoint(
        value: Double(item.entry),
        xAxisLabel: "Wed",
        date: Date(milliseconds: item.timestamp)
      )
      data.append(stat)
    }
    // 为数据集设置紫色
    let dataSet = BarDataSet(dataPoints: data, colourStyle: ColourStyle(colour: .purple))
    return BarChartData(dataSets: dataSet)
}

解决方法2:保留单个数据点的自定义颜色

如果需要不同数据点使用不同颜色,需确保BarDataSet没有设置统一的colourStyle,同时检查代码中是否有其他覆盖颜色的配置。另外注意,watchOS上的颜色渲染可能存在细微差异,确保使用的Color是系统支持的类型。

此外,你的代码存在一处小错误:原代码中Date(milliseconds: entry.timestamp)应为Date(milliseconds: item.timestamp),已在上述示例中修正。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:10:56