每个条形图都有一个高于它的值,但每当我得到太多的数据条目时,这些值就会互相溢出并使它们自己变得不可读.编辑这些我能找到的唯一方法是将它们设置在每个条形的上方或下方.但是我想完全隐藏它们.我如何在swift中执行此操作?
我正在为健康应用程序开发图形实现,用户可以选择要绘制的字段.
有些字段组合从未出现在图表上.
从我到目前为止所做的调试,我可以看到所有字段的值都是正确创建的.
所以最终我的问题是,为什么"重量移动平均线"没有线
但我真的想知道如何调试这个问题.什么是建议的下一步到底?
码:
if (isMovingAverage) {
dataset.mode = LineChartModeCubicBezier;
dataset.cubicIntensity = 0.1;
dataset.lineWidth = 2;
dataset.highlightEnabled = NO;
[dataset setColor: baseColor];
dataset.fillAlpha = 1.f;
dataset.drawCirclesEnabled = NO;
NSArray *gradientColors = @[
(id)[UIColor whiteColor].CGColor,
(id)baseColor.CGColor
];
CGGradientRef gradient = CGGradientCreateWithColors(nil, (CFArrayRef)gradientColors, nil);
dataset.fillAlpha = 1.f;
dataset.fill = [ChartFill fillWithLinearGradient:gradient angle:90.f];
dataset.drawFilledEnabled = YES;
dataset.drawHorizontalHighlightIndicatorEnabled = NO;
CGGradientRelease(gradient);
NSLog(@"Dataset: %@", dataset);
}
Run Code Online (Sandbox Code Playgroud)
调试输出:
Formatting: Weight Moving Avg
2017-07-28 17:06:49.425518+0100 BodyTrackItLite[5239:1893083] Using color: UIExtendedSRGBColorSpace 0.07 0.62 0.64 1
2017-07-28 17:06:49.426723+0100 …Run Code Online (Sandbox Code Playgroud) 我正在使用iOS图表构建图表

我正在尝试将浮点数转换为int,但iOS图表仅允许数据条目中的浮点数:
let result = ChartDataEntry(value: Float(month), xIndex: i)
Run Code Online (Sandbox Code Playgroud)
有谁知道确保只使用整数的方法?
如果可能的话,我想将我的大数字从100,000改为$ 100K.
这是我到目前为止:
let valueFormatter = NSNumberFormatter()
valueFormatter.locale = NSLocale.currentLocale()
valueFormatter.numberStyle = .CurrencyStyle
valueFormatter.maximumFractionDigits = 0
Run Code Online (Sandbox Code Playgroud)
使用NSNumberFormatter,我如何输出$ 100K而不是$ 100,000?
我原来的问题:
这是我到目前为止:
self.lineChartView.leftAxis.valueFormatter = NSNumberFormatter()
self.lineChartView.leftAxis.valueFormatter?.locale = NSLocale.currentLocale()
self.lineChartView.leftAxis.valueFormatter?.numberStyle = .CurrencyStyle
self.lineChartView.leftAxis.valueFormatter?.maximumFractionDigits = 0
Run Code Online (Sandbox Code Playgroud)
其中翻译为:
let valueFormatter = NSNumberFormatter()
valueFormatter.locale = NSLocale.currentLocale()
valueFormatter.numberStyle = .CurrencyStyle
valueFormatter.maximumFractionDigits = 0
Run Code Online (Sandbox Code Playgroud)
我的输出如下:
使用NSNumberFormatter,我如何输出$ 100K而不是$ 100,000?
更新:
我想提供有关最新情况的背景,观看评论.
func setDollarsData(months: [String], range: Double) {
var dataSets: [LineChartDataSet] = [LineChartDataSet]()
var yVals: [ChartDataEntry] = [ChartDataEntry]()
for var i = 0; i < months.count; i++ …Run Code Online (Sandbox Code Playgroud) 我使用ios-Charts创建了一个BarChart BarChartView,但我无法弄清楚如何在条形图上添加圆角.
这是我正在使用的代码:
let barChart: BarChartView
//...
var xVals = [String]()
var yVals = [BarChartDataEntry]()
//...
let set1 = BarChartDataSet(yVals: yVals, label: "Label")
set1.drawValuesEnabled = false
set1.highlightLineWidth = 3
set1.colors = [UIColor.whiteColor()]
barChart.data = BarChartData(xVals: xVals, dataSet: set1)
Run Code Online (Sandbox Code Playgroud)
我找了一个喜欢set1.barCornerRadius设置的房产,但我没找到任何东西.
这是我有的:
这就是我需要的:
如何在条形图中更改单个条形的颜色(取决于其值)?例如:我的条形图中有五个不同的值(=五个不同的条形图).值小于30的所有条形应为红色,所有条形在30到70橙色之间,所有70以上的条形应为绿色.
图表,这是我的代码:
private func setChart(pieChartView: PieChartView, values: [Double]) {
var dataEntries: [PieChartDataEntry] = []
let dataPoints = ["Mar","Apr","May"]
for i in 0..<dataPoints.count {
let dataEntry = PieChartDataEntry(value: values[i], label: dataPoints[i])
dataEntries.append(dataEntry)
}
let pieChartDataSet = PieChartDataSet(values: dataEntries, label: "")
pieChartDataSet.colors = [UIColor(red: 47/255, green: 164/255, blue: 59/255, alpha: 1.0),UIColor(red: 17/255, green: 128/255, blue: 127/255, alpha: 1.0),UIColor.orange]
let pieChartData = PieChartData(dataSet: pieChartDataSet)
pieChartView.data = pieChartData
pieChartView.centerText = "Amount Spent"
pieChartView.chartDescription?.text = ""
pieChartView.usePercentValuesEnabled = true
pieChartView.legend.horizontalAlignment = .center
}
Run Code Online (Sandbox Code Playgroud)
如何在PieChart数据中添加"%"?NSNumberFormatter()不再可用
- - …
请参阅底部更新(4/30/2015)
我正在使用ios-charts在Swift for iOS中实现一个饼图,并选择自定义图例.值得注意的是,图表显示在UICollectionView的单元格中.问题是,在第一次显示时,不显示自定义图例内容.相反,我获得了从数据生成的图例内容.
如果我在屏幕外滚动视图,然后将其滚动回屏幕,则会显示正确的自定义图例.所以,我猜我需要在设置自定义图例后强制重绘/重新布局/重新设置.我还没弄明白怎么做. 有没有人有想法?我完全错过了什么吗?谢谢!
初始显示图表 - 数据生成(错误)图例

滚动并返回到屏幕后的图表 - (正确的图例)

这是我绘制此图表的代码:
func initChart(pieChart: PieChartView) {
numFormatter.maximumFractionDigits = 0
pieChart.backgroundColor = UIColor.whiteColor()
pieChart.usePercentValuesEnabled = false
pieChart.drawHoleEnabled = true
pieChart.holeTransparent = true
pieChart.descriptionText = ""
pieChart.centerText = "30%\nComplete"
pieChart.data = getMyData()
// Setting custom legend info, called AFTER setting data
pieChart.legend.position = ChartLegend.ChartLegendPosition.LeftOfChartCenter
pieChart.legend.colors = [clrGreenDk, clrGold, clrBlue]
pieChart.legend.labels = ["Complete","Enrolled","Future"]
pieChart.legend.enabled = true
}
func getMyData() -> ChartData {
var xVals = ["Q201","R202","S203","T204","U205", "V206"]
var courses: [ChartDataEntry] = …Run Code Online (Sandbox Code Playgroud) 我有一个使用Daniel Gindi iOS图表构建的条形图.它代表一段时间内的历史数据.我遇到的问题是数据是从左到右(新数据 - >旧数据)绘制的.我需要将它绘制为从右到左(旧数据 - >新数据).我知道我可以颠倒我输入数据的顺序BarChartData,但后来我的图表问题仍然是左对齐.它需要正确对齐.我在这里讨论了讨论反转x轴的问题以及如何解决它(目前不是框架的一个包含特性),但是我无法弄清楚实际需要做什么.以下是我需要的例子:
这就是我的图表目前的样子:
这就是我需要的样子:
我的问题
有没有办法颠倒x轴?
要么
有没有办法正确对齐图表?
以下是我的一些代码并尝试解决此问题:
class ViewController: UIViewController {
@IBOutlet weak var barChartView: BarChartView!
//...
func plotChart() {
// Create history data
//...
barChartView.data = chartData // 'chartData' is the BarChartData() containing all of the history information
// No efect
barChartView.legend.direction = .RightToLeft
// Chart breaks
barChartView.leftAxis.axisMinValue = 30
barChartView.leftAxis.axisMaxValue = 0
// Breaks the ability to zoom
barChartView.setVisibleXRangeMinimum(CGFloat(40))
barChartView.setVisibleXRangeMaximum(CGFloat(1))
}
}
Run Code Online (Sandbox Code Playgroud) 我很难将库图表(来自Daniel Gindi)从版本2(Swift 2.3)迁移到3(Swift 3).
基本上,我不能让x标签(日期)与相应的图正确对齐.
这是我之前在第2版中所拥有的:
在版本2中,我有第7天,第8天,第10天和第11天的值.所以我错过了中间的一天,但标签正确地与图表一起使用.

这是我在版本3中的内容:
在版本3中,x轴中的"标签"现在已被替换为double(对于日期,它是自1970年以来的timeInterval),并通过格式化程序进行格式化.因此,无可否认,图表现在更"正确",因为图表正确地推断出第9个值,但我找不到如何将标签放在相应的图表下面.

这是我的x轴代码:
let chartView = LineChartView()
...
let xAxis = chartView.xAxis
xAxis.labelPosition = .bottom
xAxis.labelCount = entries.count
xAxis.drawLabelsEnabled = true
xAxis.drawLimitLinesBehindDataEnabled = true
xAxis.avoidFirstLastClippingEnabled = true
// Set the x values date formatter
let xValuesNumberFormatter = ChartXAxisFormatter()
xValuesNumberFormatter.dateFormatter = dayNumberAndShortNameFormatter // e.g. "wed 26"
xAxis.valueFormatter = xValuesNumberFormatter
Run Code Online (Sandbox Code Playgroud)
这是我创建的ChartXAxisFormatter类:
import Foundation
import Charts
class ChartXAxisFormatter: NSObject {
var dateFormatter: DateFormatter?
}
extension ChartXAxisFormatter: IAxisValueFormatter {
func stringForValue(_ value: Double, axis: AxisBase?) -> String …Run Code Online (Sandbox Code Playgroud)