当用户使用图表(是iOS图表)为Swift点击条形图中的栏时,我搜索并搜索了如何显示MarkerView.
该文档声明该库能够使用MarkerViews"突出显示值(使用可自定义的弹出视图)",但我不知道如何显示它.
当用户点击条形图中的条形图时,我想要一个小工具提示,如下图所示.
我已准备好chartValueSelected函数,当选中一个条时会触发该函数.
我在 iOS 上使用“Charts”库(由 Daniel Gindi 开发)。
我绘制了一个 LineChartView (那里没有问题),并且想要添加一条限制线来表示目标值:
let targetLine = ChartLimitLine(limit: targetValue, label: "")
lineChartView.leftAxis.addLimitLine(targetLine)
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是:如果图表的 y 值离目标太远,则限制线不会显示在图表上。
例子:
如何确保无论 y 值是多少,限制线始终出现?
附录:这是我的绘图代码的其余部分,它非常标准:
let chartView = LineChartView()
chartView.backgroundColor = UIColor.whiteColor()
chartView.dragEnabled = false
chartView.doubleTapToZoomEnabled = false
chartView.pinchZoomEnabled = false
chartView.highlightPerTapEnabled = false
chartView.descriptionText = ""
chartView.legend.enabled = false
chartView.rightAxis.enabled = false
// Set y axis
let yAxis = chartView.leftAxis
yAxis.removeAllLimitLines()
yAxis.drawZeroLineEnabled = true
yAxis.drawLimitLinesBehindDataEnabled = true
yAxis.valueFormatter = yValuesFormatter
// Set x …Run Code Online (Sandbox Code Playgroud) 我正在尝试使线图中的数据点标签显示自定义字符串而不是实际数字(使用iOS图表/图表库).我想知道是否有类似IAxisFormatter的东西我用来格式化我的x和y轴标签.
我想知道是否有人知道在Swift中如何做到这一点?我似乎无法在网上找到任何例子.谢谢!
我正在尝试更改图表下方标签的大小,这些标签的文本为“set1 的说明”和“set2 的说明”。更改集合的 valueFont 只会更改图表上数据点的字体/大小,而不是下面的 Eplanation 标签。
var yVals1 = Array<BarChartDataEntry>()
var yVals2 = Array<BarChartDataEntry>()
yVals1.append(BarChartDataEntry(value: Double(number1), xIndex: 0))
yVals2.append(BarChartDataEntry(value: Double(number2), xIndex: 0))
var set1: BarChartDataSet?
var set2: BarChartDataSet?
set1 = BarChartDataSet(yVals: yVals1, label: "Explanation for set1")
set1?.valueFont = UIFont(name: "Verdana", size: 14.0)!
set1?.setColor(UIColor.redColor())
set2 = BarChartDataSet(yVals: yVals2, label: "Explanation for set2")
set2?.valueFont = UIFont(name: "Verdana", size: 14.0)!
set2!.setColor(UIColor.blueColor())
var data = BarChartData()
data.addDataSet(set1)
data.addDataSet(set2)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我正在使用该库的 2.2.5 版。
当我增加 xAxis 标签的大小时
mChart.xAxis.labelFont = UIFont(name: "HelveticaNeue-Light", size: 12.0)!
Run Code Online (Sandbox Code Playgroud)
到:
mChart.xAxis.labelFont = …Run Code Online (Sandbox Code Playgroud) 我最近将我的一个客户项目从Swift2iOS-charts 2 升级到Swift3iOS-charts 3。
经过几天的手动调整后,大多数代码都按预期运行,但是,我的水平条形图仍然存在问题。
图表用于显示为:
图表现在显示为:
图表核心代码:
func drawMarginChart() {
let labels = marginObject!.getLabelsForChart()
let values = marginObject!.getValuesForChart()
var dataEntries = [ChartDataEntry]()
for i in 0..<values.count {
let entry = BarChartDataEntry(x: Double(i), y: values[i])
dataEntries.append(entry)
}
let barChartDataSet = BarChartDataSet(values: dataEntries, label: "")
barChartDataSet.drawValuesEnabled = false
barChartDataSet.colors = ChartColorTemplates.joyful()
let barChartData = BarChartData(dataSet: barChartDataSet)
barChartMargins.data = barChartData
barChartMargins.legend.enabled = false
barChartMargins.xAxis.valueFormatter = IndexAxisValueFormatter(values: labels)
barChartMargins.xAxis.granularityEnabled = true
barChartMargins.xAxis.granularity = 1
barChartMargins.animate(xAxisDuration: 3.0, yAxisDuration: 3.0, easingOption: …Run Code Online (Sandbox Code Playgroud) 我只想在点击 iOS 图表时突出显示和显示价值。我启用了突出显示而不是值,因为我只在点击和突出显示时想要它们
lineChartDataSet.drawValuesEnabled = false
lineChartDataSet.highlightEnabled = true
Run Code Online (Sandbox Code Playgroud)
我需要这个功能吗?
func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) {}
Run Code Online (Sandbox Code Playgroud) 我有一个饼图,我试图从图表中删除值标签,因为它们会相互溢出,但似乎没有代码将其删除。
这是我一直在尝试删除它的代码:
chartIMG.drawEntryLabelsEnabled = false
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用。
我创建图表的代码:
func configure(dataPoints: [String], values: [Double]) {
var dataEntries: [ChartDataEntry] = []
for i in 0..<dataPoints.count {
let dataEntry1 = PieChartDataEntry(value: Double(i), label: dataPoints[i], data: dataPoints[i] as AnyObject)
dataEntries.append(dataEntry1)
}
print(dataEntries[0].data)
let pieChartDataSet = PieChartDataSet(values: dataEntries, label: "Symptoms")
let pieChartData = PieChartData(dataSet: pieChartDataSet)
chartIMG.data = pieChartData
chartIMG.drawEntryLabelsEnabled = false
chartIMG.chartDescription?.text = ""
var colors: [UIColor] = []
for _ in 0..<dataPoints.count {
let red = Double(arc4random_uniform(256))
let green = Double(arc4random_uniform(256))
let blue = Double(arc4random_uniform(256)) …Run Code Online (Sandbox Code Playgroud) 我想创建一个具有多个 y 轴的图形。在danielgindi图表中可以使用决斗 y 轴图,但我想要更多的两个 y 轴图。如下图所示:
let set1 = LineChartDataSet(values: yVals1, label: "DataSet 1")
set1.axisDependency = .left
set1.setColor(UIColor(red: 51/255, green: 181/255, blue: 229/255, alpha: 1))
set1.setCircleColor(.white)
set1.lineWidth = 2
set1.circleRadius = 3
set1.fillAlpha = 65/255
set1.fillColor = UIColor(red: 51/255, green: 181/255, blue: 229/255, alpha: 1)
set1.highlightColor = UIColor(red: 244/255, green: 117/255, blue: 117/255, alpha: 1)
set1.drawCircleHoleEnabled = false
let set2 = LineChartDataSet(values: yVals2, label: "DataSet 2")
set2.axisDependency = .right
set2.setColor(.red)
set2.setCircleColor(.white)
set2.lineWidth = 2
set2.circleRadius = 3 …Run Code Online (Sandbox Code Playgroud) 有没有办法用渐变填充条形图中的条形。我可以像下面的链接中解释的那样制作渐变:
let gradientColors = [UIColor.cyan.cgColor, UIColor.clear.cgColor] as CFArray // Colors of the gradient
let colorLocations:[CGFloat] = [1.0, 0.0] // Positioning of the gradient
let gradient = CGGradient.init(colorsSpace: CGColorSpaceCreateDeviceRGB(),
colors: gradientColors, locations: colorLocations) // Gradient Object
Run Code Online (Sandbox Code Playgroud)
但如何将它应用到酒吧?
上一个问题Gradient Fill in Swift for iOS-Charts没有回答它,因为.fill它不可用BarChartDataSet
我目前正在使用iOS Library Charts并且在为x Axis实现TimeLine 时遇到了一些问题。
图书馆链接:https : //github.com/danielgindi/Charts
我有一个对象列表作为图表的输入。
let objectList : [Object] = fillObjectList()
class Object {
var timeCreated : Date
var value : Double
}
Run Code Online (Sandbox Code Playgroud)
我已经实现了一个解决方案,我只是将
timeCreated.timeIntervalsince1970用作 x 轴的值。但这看起来不是那么好。
所以如果你们有使用iOS Charts Library的经验,希望你们能想出解决这个问题的办法。非常感谢您的帮助!