如何在 iOS 图表中的 X 轴上添加字符串?

2024-01-29

在新版本中,我在创建一些图表时遇到了一些麻烦,以前的代码是:

func setChart(dataPoints: [String], values: [Double]) {
    var dataEntries: [BarChartDataEntry] = []

    for i in 0..<dataPoints.count {
        let dataEntry = BarChartDataEntry(value: values[i], xIndex: i)
        dataEntries.append(dataEntry)
    }

    let chartDataSet = BarChartDataSet(yVals: dataEntries, label: "Units Sold")
    let chartData = BarChartData(xVals: months, dataSet: chartDataSet)
    barChartView.data = chartData
}

您可以使用以下行传递值,例如月份数组:

let chartData = BarChartData(xVals: months, dataSet: chartDataSet)

新版本发布后,实现相同图表的代码是:

func setChart(dataPoints: [String], values: [Double]) {          
    var dataEntries: [BarChartDataEntry] = []

    for i in 0..<dataPoints.count {
        let dataEntry = BarChartDataEntry(x: Double(i+2), y:values[i], data: months )
        dataEntries.append(dataEntry)
    }

    let chartDataSet = BarChartDataSet(values: dataEntries, label: "Units Sold")

    let chartData = BarChartData()
    chartData.addDataSet(chartDataSet)
    barChartView.data = chartData
}

我尝试了几个小时,但找不到修改 X 轴值的方法,我希望有人可以帮助我,谢谢!


你好,最近我遇到了同样的问题,并通过以下方式解决了 -

class ViewController: UIViewController {

    var months: [String]!
    var unitsSold = [Double]()
    weak var axisFormatDelegate: IAxisValueFormatter?

    @IBOutlet var viewForChart: BarChartView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        axisFormatDelegate = self
        months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
        unitsSold = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0, 4.0, 18.0, 2.0, 4.0, 5.0, 4.0]

       // setChart(_ dataPoints:months,_ forY: unitsSold)
        setChart(dataEntryX: months, dataEntryY: unitsSold)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func setChart(dataEntryX forX:[String],dataEntryY forY: [Double]) {
        viewForChart.noDataText = "You need to provide data for the chart."
        var dataEntries:[BarChartDataEntry] = []
        for i in 0..<forX.count{
           // print(forX[i])
           // let dataEntry = BarChartDataEntry(x: (forX[i] as NSString).doubleValue, y: Double(unitsSold[i]))
            let dataEntry = BarChartDataEntry(x: Double(i), y: Double(forY[i]) , data: months as AnyObject?)
            print(dataEntry)
            dataEntries.append(dataEntry)
        }
        let chartDataSet = BarChartDataSet(values: dataEntries, label: "Units Sold")
        let chartData = BarChartData(dataSet: chartDataSet)
        viewForChart.data = chartData
        let xAxisValue = viewForChart.xAxis
        xAxisValue.valueFormatter = axisFormatDelegate

    }
}

最后只需添加委托的扩展名

extension ViewController: IAxisValueFormatter {

    func stringForValue(_ value: Double, axis: AxisBase?) -> String {
    return months[Int(value)]
    }
}

通过这个链接找到了这个解决方案https://medium.com/@skoli/using-realm-and-charts-with-swift-3-in-ios-10-40c42e3838c0#.minfe6kuk https://medium.com/@skoli/using-realm-and-charts-with-swift-3-in-ios-10-40c42e3838c0#.minfe6kuk

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 iOS 图表中的 X 轴上添加字符串? 的相关文章

随机推荐

  • 使用 pytest 测试多个选项

    我正在尝试测试 Web API 假设一个端点接受多个参数 类型 可能的值为 大 小 中 颜色 可能的值为 黑色 白色 红色 运输 可能值为 1 2 7 我想测试这些的所有组合 以确保 API 返回正确的结果 起初我以为我可以建造 3 个装置
  • 使用值包装器和operator()重载来简化getter/setter设计:危险的做法吗?

    考虑下面的类 class MyClass1 public double x const return x getter double y const return y getter double z const return x y get
  • PHP:如何在一篇文章中向多个设备发送 GCM 通知

    我是一名 Android 开发人员 目前使用 PHP 在 GCM 服务器端工作 从我的客户端 我将 gcm 响应令牌存储在一个数据库中 现在我想一次性向注册用户发送消息 我不知道该怎么做 我完全困惑了 我的简单 HTML 文件是
  • ASP.NET Core (.NET 5) + Angular 11 = 空项目上的构建错误

    If I create a new ASP NET Core Web API Angular project in Visual Studio using dotnet new angular it creates a NET 5 proj
  • XHTML 中所有有效的自关闭元素(由主要浏览器实现)有哪些?

    XHTML 中所有有效的自关闭元素 例如 由主要浏览器实现 有哪些 我知道 XHTML 在技术上允许任何元素自关闭 但我正在寻找所有主要浏览器支持的这些元素的列表 看http dusan fora si blog self ending t
  • 如何在Java中安全地访问数组线程?

    Java 中数组的操作是线程安全的吗 如果不是 如何在 Java 中安全地访问数组以进行读取和写入 使用多个线程更改数组时 不会出现无效状态 但是 如果某个线程编辑了数组中的值 则不能保证另一个线程会看到更改 非易失性变量也会出现类似的问题
  • 获取 a.foreach 不是函数错误

    我正在尝试使用 Angular js 构建一个多选列表 我收到一个奇怪的 TypeError a foreach 不是一个函数 我似乎不知道什么时候发生 js var myAppModule angular module multisele
  • IIS asp.net mvc 部分?上传文件

    鉴于以下代码非常通用 我希望有人能告诉我一些幕后发生的事情 HttpPost public ActionResult Load Guid regionID HttpPostedFileBase file if file ContentLen
  • 如何在另一个C++程序中运行一个C++程序?

    我有一个简单的 C 程序 它接受输入并输出一些字符串 像这样 game what kind of game type r for regular s for special r choose a number from 1 10 1 no
  • 角业力跑步者无限期挂起

    Windows 8 64 位 Node js 0 10 5 64 位 业力 0 8 5 我能够启动 karma 服务器 Chrome 浏览器打开 我将其定义为 karma 配置中的默认浏览器 当我进行 业力奔跑 时 问题就出现了 Chrom
  • 用于存储 RGB 字符串的枚举 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我以前从未使用过枚举 所以我发现它们非常令人困惑 我想存储大量 RGB 值 作为字符串 并且我认为枚举是最好的选择 而不是列出静态最终字符
  • 使用 LinqToCSV 将 CSV 写入 MemoryStream 不会返回任何数据

    我已经验证使用System Text Encoding ASCII GetString ms ToArray 我的内存流有预期的数据 但是 使用 LinqToCSV nuget 库不会生成我的 csv 文件 我没有收到任何错误或异常抛出 当
  • 多个“++”在变量和指针中工作

    这就是我认为的 操作员做 a a 1 after calculating this line a a 1 before calcuating this line 我正在尝试研究指针 我认为我误解了一些东西 int a 10 int arr
  • 使用rapidjson检索JSON字符串内的嵌套对象

    我需要检索 JSON 字符串内的嵌套对象 并且我正在尝试使用 rapidjson 来完成此操作 我发现的只是如何检索数组和基本类型 而不是子对象 我创建了以下给出错误的玩具示例 rapidjson Document document std
  • 从扩展更新 UIApplicationShortcutItem

    我正在为应用程序构建 Today Extension 它对于修改我的应用程序数据非常有用 但现在我的动态UIApplicationShortcutItems不同步 我无法访问UIApplication shared从我的分机 有没有办法要求
  • 如何使用 CSS 为多个图像设置不同的样式?

    我基本上是在设计一篇长文 其中散布着各种图像 我希望第一张图像 浮动 左 第二张图像 浮动 右 我知道我可以像这样设计图像 img float left 这使得每张图像都具有相同的风格 如何为每张图像设置不同的样式 我尝试将每个图像放在不同
  • 一个关于facebook评论插件的简单问题

    我正在努力解决一个非常简单的问题 Facebook 文档一如既往地没有给我足够的解释 我在我的网站上附加了一个 Facebook 评论插件 并使用 comment create 事件的回调 我可以获得刚刚创建的评论的信息 FB Event
  • jQuery 调用中的哈希符号

    作为一名务实的编码员 我往往会错过一些明显的事情 我想知道 有什么区别 loc loc 信息越多 关于 的来龙去脉就越好 loc is an 元素选择器 http api jquery com element selector 寻找
  • Flexjson 和 Dexguard/Proguard

    当涉及到 flexjson 库时 我在使用 dexguard 时遇到问题 尝试使用 JSONDeserializer 反序列化时 我不断收到以下错误 09 15 20 46 10 271 10901 11552 A art sart run
  • 如何在 iOS 图表中的 X 轴上添加字符串?

    在新版本中 我在创建一些图表时遇到了一些麻烦 以前的代码是 func setChart dataPoints String values Double var dataEntries BarChartDataEntry for i in 0