当前位置: 首页 > 面试题库 >

如何使用ios-charts制作分组的BarChart?

汤兴生
2023-03-14
问题内容

我正在使用ios-charts库。

我想对变频器值进行分组,以便每年都是一组。不幸的是,每年的每月价值可能会有所不同。

我的数据json看起来像这样:

{"monthlyData":[{"ERTRAG":"30.2989999055862","MONAT":"2","JAHR":"2016"},{"ERTRAG":"154.897000223398","MONAT":"1","JAHR":"2016"},{"ERTRAG":"141.996000155807","MONAT":"12","JAHR":"2015"},{"ERTRAG":"135.449000149965","MONAT":"11","JAHR":"2015"},{"ERTRAG":"319.437000751495","MONAT":"10","JAHR":"2015"},{"ERTRAG":"483.369997739792","MONAT":"9","JAHR":"2015"},{"ERTRAG":"698.112997770309","MONAT":"8","JAHR":"2015"},{"ERTRAG":"771.764000892639","MONAT":"7","JAHR":"2015"},{"ERTRAG":"736.611003398895","MONAT":"6","JAHR":"2015"},{"ERTRAG":"737.237999916077","MONAT":"5","JAHR":"2015"},{"ERTRAG":"720.181995391846","MONAT":"4","JAHR":"2015"},{"ERTRAG":"484.979001283646","MONAT":"3","JAHR":"2015"},{"ERTRAG":"249.974001646042","MONAT":"2","JAHR":"2015"},{"ERTRAG":"92.8830004036427","MONAT":"1","JAHR":"2015"},{"ERTRAG":"52.7970000207424","MONAT":"12","JAHR":"2014"},{"ERTRAG":"181.025999426842","MONAT":"11","JAHR":"2014"},{"ERTRAG":"332.789002537727","MONAT":"10","JAHR":"2014"},{"ERTRAG":"482.244999885559","MONAT":"9","JAHR":"2014"},{"ERTRAG":"602.811999320984","MONAT":"8","JAHR":"2014"},{"ERTRAG":"699.872003316879","MONAT":"7","JAHR":"2014"},{"ERTRAG":"828.212007522583","MONAT":"6","JAHR":"2014"},{"ERTRAG":"679.010004997253","MONAT":"5","JAHR":"2014"},{"ERTRAG":"635.115998744965","MONAT":"4","JAHR":"2014"},{"ERTRAG":"559.617002010345","MONAT":"3","JAHR":"2014"},{"ERTRAG":"265.135001063347","MONAT":"2","JAHR":"2014"},{"ERTRAG":"165.272998273373","MONAT":"1","JAHR":"2014"},{"ERTRAG":"134.578999936581","MONAT":"12","JAHR":"2013"},{"ERTRAG":"153.774000287056","MONAT":"11","JAHR":"2013"},{"ERTRAG":"321.733997344971","MONAT":"10","JAHR":"2013"},{"ERTRAG":"482.768000483513","MONAT":"9","JAHR":"2013"},{"ERTRAG":"692.864000797272","MONAT":"8","JAHR":"2013"},{"ERTRAG":"846.429007053375","MONAT":"7","JAHR":"2013"},{"ERTRAG":"709.758005619049","MONAT":"6","JAHR":"2013"},{"ERTRAG":"532.493996858597","MONAT":"5","JAHR":"2013"},{"ERTRAG":"462.539998054504","MONAT":"4","JAHR":"2013"},{"ERTRAG":"419.105004012585","MONAT":"3","JAHR":"2013"},{"ERTRAG":"143.189998820424","MONAT":"2","JAHR":"2013"},{"ERTRAG":"78.720000628382","MONAT":"1","JAHR":"2013"},{"ERTRAG":"90.1430006623268","MONAT":"12","JAHR":"2012"},{"ERTRAG":"155.483000457287","MONAT":"11","JAHR":"2012"},{"ERTRAG":"348.231998205185","MONAT":"10","JAHR":"2012"},{"ERTRAG":"598.037001848221","MONAT":"9","JAHR":"2012"},{"ERTRAG":"729.740003108978","MONAT":"8","JAHR":"2012"},{"ERTRAG":"676.923998832703","MONAT":"7","JAHR":"2012"},{"ERTRAG":"694.879002094269","MONAT":"6","JAHR":"2012"},{"ERTRAG":"811.281997680664","MONAT":"5","JAHR":"2012"},{"ERTRAG":"489.765002369881","MONAT":"4","JAHR":"2012"},{"ERTRAG":"538.866001605988","MONAT":"3","JAHR":"2012"},{"ERTRAG":"277.856996208429","MONAT":"2","JAHR":"2012"},{"ERTRAG":"155.854999214411","MONAT":"1","JAHR":"2012"},{"ERTRAG":"148.157999750227","MONAT":"12","JAHR":"2011"},{"ERTRAG":"230.409998774529","MONAT":"11","JAHR":"2011"}]}

我尝试了以下方法:

var months = Array<String>()
var years = Array<String>()
var dataEntries: [BarChartDataEntry] = []
var dataSets: [BarChartDataSet] = []
var overallSum = 0.0
var year = 2010 //monthlyValues[0].year
var count = 0
var chartDataSet: BarChartDataSet?

for i in 0..<monthlyValues.count {
  // if year is different, create new barchartdataset
  if monthlyValues[i].year != year {
    years.append("\(monthlyValues[i].year)")
    chartDataSet = BarChartDataSet(yVals: dataEntries, label: "\(year)")
    chartDataSet!.colors = [UIColor.whiteColor()]
    dataSets.append(chartDataSet!)
    year = monthlyValues[i].year
    dataEntries = []
    //months = []
    count = 0
  }
  months.append("\(monthlyValues[i].month)")
  overallSum += monthlyValues[i].amount

  let dataEntry = BarChartDataEntry(value: monthlyValues[i].amount, xIndex: count)
  count++
  dataEntries.append(dataEntry)
}
let chartData = BarChartData(xVals: months, dataSets: dataSets)
self.barChartView.data = chartData

这将在图例中显示带有正确年份标签的五个系列,但图表中没有组分隔符,并且每年的柱数为4或5(预期= 12)。

感谢您对此的任何提示!


问题答案:

您在这里出了点问题。现在,您正在DataSet为每年创建一个新的。

您需要做的是DataSets在每个组中创建任意数量的条,其中一个DataSet代表每个组中的一个条。(例如,数据集1代表组中的每个第一栏,数据集2代表组中的每个第二栏,…)

例如,假设有一个这样的图表,其中有4组,每组3条。每个小组代表一年。

||| ||| ||| |||

  • 上面显示的设置需要3个数据集(每组一个)
  • 同一组中的条目具有相同的x索引(例如,第一组中的所有条目的x索引均为0)
  • 它总共包含12个条目
  • 每个数据集包含4个条目,条目x索引的范围是0到3

在这里,您可以找到上述场景的示例,并查看文档。



 类似资料:
  • 本文向大家介绍iOS使用Charts框架绘制折线图,包括了iOS使用Charts框架绘制折线图的使用技巧和注意事项,需要的朋友参考一下 首先先看一下效果: 折线图 一、 初始化折线图对象 创建一个折线图的用到的类是LineChartView.h, 代码如下: 二、设置折线图外观样式 1.设置交互样式 2.设置X轴样式 3.设置Y轴样式 4.设置网格线样式 主要是设置Y轴的网格线样式, 代码如下:

  • 本文向大家介绍iOS使用Charts框架绘制柱形图,包括了iOS使用Charts框架绘制柱形图的使用技巧和注意事项,需要的朋友参考一下 首先看一下最终要实现的效果: 最终效果 一、初始化barChartView 绘制柱形图需要用到BarChartView这个类,下面是初始化代码: 二、设置barChartView的外观样式 1.基本样式 2.barChartView的交互设置 3.设置barCha

  • ios-charts 是 MPAndroidChart 的 iOS 移植版本,在 iOS 上实现了漂亮的图表功能。要求 Swift 1.2 和 Xcode 6.3 beta 4! LineChart (with legend, simple design) LineChart (with legend, simple design) LineChart (cubic lines) LineChar

  • 问题内容: 我想制作一个ExpandableListView,它从服务器(JSON数组)的响应中为其组及其子级获取数据。这是我的json: “ alamat”和“ nama”将成为组,“ begdate”和“ enddate”将成为其子项。我从这里开始按照以下教程操作:http://en.wikicode.org/index.php/Custom_ExpandableListView,但是当我实现

  • 问题内容: 假设地,我有5个字符串数组对象: 我希望另一个数组对象包含这5个字符串数组对象。我该怎么做?我可以把它放在另一个数组中吗? 问题答案: 像这样: 要么 (后一种语法可以用于变量声明之外的赋值中,而较短的语法仅适用于声明。)

  • 祝大家过得愉快,我想问一件事,我需要用方括号而不是卷发来制作JSON数组,但现在我有了这样的JSON: 我想把它改成这样: 所以我可以把JSON放在我的数据表中,因为它需要方括号而不是方括号,不管怎样,我也在使用reactjs,有可能把JSON数组变成这样吗? 这是我的密码 如果有人能帮助我,我真的很感激:)