标签: ios-charts

在饼图和条形图中,过度拥挤的标签是不可读的

对于PieCharts,通常有几个"切片"具有非常小的数据部分(例如,<2%),因此,标签彼此重叠并且不可读,如下所示.有谁知道这方面的解决方案?我已经看到一些图表显示了馅饼外面的标签并指向相应的部分,但我不确定ios-charts是否有类似的东西.

在此输入图像描述

条形图也会出现类似的问题,其中所有值彼此重叠并变得不可读,如下所示.我能想到的解决方案是仅显示条形的一部分,并显示用户平移的其他条形.

在此输入图像描述

如果有人处理过这两个问题,我会很高兴看到你如何解决它,或者是否更好地使用不同的库.我在下面发布了一些代码,但不确定它是否会有所帮助,因为这可能不是真正的实现错误.

条形图

    //...init view...
    _chartView.delegate = self;
    _chartView.descriptionText = @"";
    _chartView.noDataTextDescription = @"No data";
    _chartView.drawHighlightArrowEnabled = true;
    _chartView.drawValueAboveBarEnabled = YES;
    _chartView.drawMarkers = true;
    _chartView.dragEnabled = true;


    ChartXAxis *xAxis = _chartView.xAxis;
    xAxis.labelPosition = XAxisLabelPositionBottom;
    xAxis.labelFont = [UIFont systemFontOfSize:10.f];
    xAxis.drawGridLinesEnabled = NO;
    xAxis.spaceBetweenLabels = 2.0;

    ChartYAxis *rightAxis = _chartView.rightAxis;
    rightAxis.enabled = NO;

    NSMutableArray *yVals = [[NSMutableArray alloc] init];
    NSMutableArray *xVals = [[NSMutableArray alloc] init];

    //populate xVals and yVals with data..

    BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithYVals:yVals label:@"Occurences"];
    set1.colors = ChartColorTemplates.vordiplom; …
Run Code Online (Sandbox Code Playgroud)

charts objective-c ios ios-charts

5
推荐指数
1
解决办法
1286
查看次数

点击iOS-Charts中BarChart栏上的回调

我已经实现了一个条形图,我想在点击一个特定的栏时转到一个更具体的视图 - 就像我点击了一个UIButton.这可能吗?我需要知道我为了用正确的数据填充我的其他视图而点击了哪个栏,但我似乎找不到任何方法将动作绑定到一个特定的栏BarChart.我正在使用Swift.

swift ios-charts

5
推荐指数
1
解决办法
3103
查看次数

如何删除LineChartView iOS图表中的点

我正在学习ios-charts.我正在使用这里找到的教程.第一张照片显示了我得到的结果.如何删除蓝色圆圈点,使其仅显示如第二张图片中所示的平滑线条? 这是我得到的结果

这就是我想要的

这是代码片段

import UIKit
import Charts

class ChartsViewController: UIViewController {

@IBOutlet weak var lineChartView: LineChartView!

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
    let unitsSold = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0]

    setChart(months, values: unitsSold)

}

func setChart(dataPoints: [String], values: [Double]) {

    var dataEntries: [ChartDataEntry] = []

    for i in 0..<dataPoints.count {
        let dataEntry = ChartDataEntry(value: values[i], xIndex: i)
        dataEntries.append(dataEntry)
    } …
Run Code Online (Sandbox Code Playgroud)

linechart ios swift ios-charts

5
推荐指数
2
解决办法
5234
查看次数

用户单击Chart时创建MarkerView

当用户使用图表(是iOS图表)为Swift点击条形图中的栏时,我搜索并搜索了如何显示MarkerView.

该文档声明该库能够使用MarkerViews"突出显示值(使用可自定义的弹出视图)",但我不知道如何显示它.

当用户点击条形图中的条形图时,我想要一个小工具提示,如下图所示.

条形图上的工具提示: 在此输入图像描述

我已准备好chartValueSelected函数,当选中一个条时会触发该函数.

xcode bar-chart ios swift ios-charts

5
推荐指数
1
解决办法
6639
查看次数

如何将iOS Charts LineChartView显示为样条线(平滑线图)?

我是iOS图表的新手,但我已经弄清楚如何用它来做很多事情.我无法弄清楚(或找到任何地方)的一件事是如何将LineChartView显示为样条曲线而不是每个数据点的不同线条.我希望它流畅而流畅,而不是锯齿状.

ios swift ios-charts

5
推荐指数
1
解决办法
3124
查看次数

如何在iOS图表中自定义数据点标签?

我正在尝试使线图中的数据点标签显示自定义字符串而不是实际数字(使用iOS图表/图表库).我想知道是否有类似IAxisFormatter的东西我用来格式化我的x和y轴标签.

我想知道是否有人知道在Swift中如何做到这一点?我似乎无法在网上找到任何例子.谢谢!

charts xcode swift ios-charts

5
推荐指数
1
解决办法
3317
查看次数

iOS图表:如何将条形宽度设置为固定大小?

我希望条宽等于30像素.

barData.barWidth让我改变它,但这与图表宽度和要显示的条数成正比,这在iPad上只显示一个元素的大条形图.

你有好主意吗?

谢谢.

ios swift ios-charts

5
推荐指数
1
解决办法
3696
查看次数

在x轴以下刻度(iOS图表)

我想在x轴下方打勾,日期标签(3.6。,7.6。,12.6。17.6,21.6。,26.6。)所在的位置(请参见下图)。我正在使用iOS图表库(https://github.com/danielgindi/Charts)。

我设法通过覆盖drawGridLine方法在图表内做出刻度。我所做的就是将线段的开头从viewPortHandler.contentTop更改为viewPortHandler.contentBottom - 5。即,网格线从x轴上方开始5个像素。但是,当将网格线延伸到x轴(viewPortHandler.contentBottom + 10)之外时,该线仍只会向下绘制到x轴,而不能向下绘制。有人可以指出我正确的方向吗?如何在x轴下方绘制垂直线?

这是我的自定义XAxisRenderer:

class XAxisRendererWithTicks: XAxisRenderer {

    override func drawGridLine(context: CGContext, x: CGFloat, y: CGFloat) {
        guard
            let viewPortHandler = self.viewPortHandler
            else { return }

        if x >= viewPortHandler.offsetLeft
            && x <= viewPortHandler.chartWidth
        {
            context.beginPath()
            context.move(to: CGPoint(x: x, y: viewPortHandler.contentBottom - 5))
            context.addLine(to: CGPoint(x: x, y: viewPortHandler.contentBottom + 10))
            context.strokePath()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

蜱虫出现,但我希望他们能够低于 x轴:

在此处输入图片说明

这里有一个类似的问题,但是它的答案并没有真正帮助我:X轴iOS图表上的垂直线

ios swift ios-charts

5
推荐指数
1
解决办法
439
查看次数

如何在 Swift3 IOS 饼图中添加点击手势识别?

我正在使用 Swift 3 开发小型实践 IOS 应用程序。在该应用程序中,我想要一个饼图。为了构建饼图,我点击了链接,饼图正在生成。

现在我想再添加一项功能。当用户点击饼图的某个区域(如任何月份)时,它应该打开一个新的控制器并仅显示该月的详细信息。

我设法添加手势识别功能。但是当我点击屏幕的任何部分时,它会打开新屏幕。我想将该点击功能仅限于饼图部分,并且应该捕获饼图月份。代码是

let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.handleTap))

pieChartView.addGestureRecognizer(gestureRecognizer)
Run Code Online (Sandbox Code Playgroud)

手柄水龙头代码是

func handleTap(gestureRecognizer: UIGestureRecognizer) {
let monthDetail = storyboard?.instantiateViewController(withIdentifier: "MonthTableView") as! MonthDetailsTableViewController
monthDetail = month  //Should be the month value of Tap area
navigationController?.pushViewController(monthDetail, animated: true)

}
Run Code Online (Sandbox Code Playgroud)

感谢任何帮助!

=========================

更新代码

import UIKit
import Charts
import CoreData

class ExpenseViewController: UIViewController, ChartViewDelegate {

@IBOutlet weak var pieChartView: PieChartView!

    let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
    var unitsSold = [10.0, 20.0, 10.0, 30.0, …
Run Code Online (Sandbox Code Playgroud)

uigesturerecognizer ios pie-chart swift ios-charts

4
推荐指数
1
解决办法
2179
查看次数

如何在 iOS 图表中显示没有 Y 轴的 Y 网格线

我正在使用“danielgindi/Charts”( iOS-charts )制作图表,我希望能够显示 Y 轴的网格线,但没有底座。

这应该是结果:

在此输入图像描述

但我被卡住了,如果不启用左轴就无法获取线条。

这就是我得到的,我想去掉左边的线。(红色箭头所指的那个)

在此输入图像描述

这是我的一些代码:

    func setupChart(data: LineChartData ) {

    chartView.delegate = self
    chartView.backgroundColor = .white

    chartView.chartDescription?.enabled = false

    chartView.dragEnabled = false
    chartView.setScaleEnabled(false)
    chartView.pinchZoomEnabled = false
    chartView.setViewPortOffsets(left: 10, top: 0, right: 10, bottom: 0)

    chartView.legend.enabled = false

    chartView.leftAxis.enabled = true
    chartView.leftAxis.labelCount = 3
    chartView.leftAxis.spaceTop = 0.70
    chartView.leftAxis.spaceBottom = 0.20

    chartView.rightAxis.enabled = false
    chartView.xAxis.enabled = false

    chartView.data = data
}
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!

ios swift ios-charts

4
推荐指数
1
解决办法
1939
查看次数