├── Cartfile
├── Cartfile.private
├── Assets
├── feature_graphic.png
└── feature_graphic.psd
├── Cartfile.resolved
├── Tests
├── Supporting Files
│ ├── Media.xcassets
│ │ ├── Contents.json
│ │ └── icon.imageset
│ │ │ ├── star.png
│ │ │ ├── star-1.png
│ │ │ ├── star-2.png
│ │ │ └── Contents.json
│ └── Info.plist
├── ReferenceImages_64
│ ├── ChartsTests.LineChartTests
│ │ ├── testIsCubic_iOS_320.0_568.0@2x.png
│ │ ├── testIsCubic_iOS_375.0_667.0@2x.png
│ │ ├── testIsCubic_iOS_414.0_736.0@3x.png
│ │ ├── testIsCubic_tvOS_1920.0_1080.0.png
│ │ ├── testDrawIcons_iOS_320.0_568.0@2x.png
│ │ ├── testDrawIcons_iOS_375.0_667.0@2x.png
│ │ ├── testDrawIcons_iOS_414.0_736.0@3x.png
│ │ ├── testDrawIcons_iOS_768.0_1024.0@2x.png
│ │ ├── testDrawIcons_iOS_834.0_1112.0@2x.png
│ │ ├── testDrawIcons_tvOS_1920.0_1080.0.png
│ │ ├── testIsCubic_iOS_1024.0_1366.0@2x.png
│ │ ├── testIsCubic_iOS_768.0_1024.0@2x.png
│ │ ├── testIsCubic_iOS_834.0_1112.0@2x.png
│ │ ├── testDrawIcons_iOS_1024.0_1366.0@2x.png
│ │ ├── testHidesValues_iOS_320.0_568.0@2x.png
│ │ ├── testHidesValues_iOS_375.0_667.0@2x.png
│ │ ├── testHidesValues_iOS_414.0_736.0@3x.png
│ │ ├── testHidesValues_iOS_768.0_1024.0@2x.png
│ │ ├── testHidesValues_iOS_834.0_1112.0@2x.png
│ │ ├── testHidesValues_tvOS_1920.0_1080.0.png
│ │ ├── testDefaultValues_iOS_1024.0_1366.0@2x.png
│ │ ├── testDefaultValues_iOS_320.0_568.0@2x.png
│ │ ├── testDefaultValues_iOS_375.0_667.0@2x.png
│ │ ├── testDefaultValues_iOS_414.0_736.0@3x.png
│ │ ├── testDefaultValues_iOS_768.0_1024.0@2x.png
│ │ ├── testDefaultValues_iOS_834.0_1112.0@2x.png
│ │ ├── testDefaultValues_tvOS_1920.0_1080.0.png
│ │ ├── testHidesValues_iOS_1024.0_1366.0@2x.png
│ │ ├── testDoesntDrawCircles_iOS_320.0_568.0@2x.png
│ │ ├── testDoesntDrawCircles_iOS_375.0_667.0@2x.png
│ │ ├── testDoesntDrawCircles_iOS_414.0_736.0@3x.png
│ │ ├── testDoesntDrawCircles_tvOS_1920.0_1080.0.png
│ │ ├── testDoesntDrawCircleHole_iOS_320.0_568.0@2x.png
│ │ ├── testDoesntDrawCircleHole_iOS_375.0_667.0@2x.png
│ │ ├── testDoesntDrawCircleHole_iOS_414.0_736.0@3x.png
│ │ ├── testDoesntDrawCircleHole_tvOS_1920.0_1080.0.png
│ │ ├── testDoesntDrawCircles_iOS_1024.0_1366.0@2x.png
│ │ ├── testDoesntDrawCircles_iOS_768.0_1024.0@2x.png
│ │ ├── testDoesntDrawCircles_iOS_834.0_1112.0@2x.png
│ │ ├── testDoesntDrawCircleHole_iOS_1024.0_1366.0@2x.png
│ │ ├── testDoesntDrawCircleHole_iOS_768.0_1024.0@2x.png
│ │ └── testDoesntDrawCircleHole_iOS_834.0_1112.0@2x.png
│ ├── ChartsTests.BarChartTests
│ │ ├── testDrawIcons_iOS_1024.0_1366.0@2x.png
│ │ ├── testDrawIcons_iOS_320.0_568.0@2x.png
│ │ ├── testDrawIcons_iOS_375.0_667.0@2x.png
│ │ ├── testDrawIcons_iOS_414.0_736.0@3x.png
│ │ ├── testDrawIcons_iOS_768.0_1024.0@2x.png
│ │ ├── testDrawIcons_iOS_834.0_1112.0@2x.png
│ │ ├── testDrawIcons_tvOS_1920.0_1080.0.png
│ │ ├── testHidesValues_iOS_320.0_568.0@2x.png
│ │ ├── testHidesValues_iOS_375.0_667.0@2x.png
│ │ ├── testHidesValues_iOS_414.0_736.0@3x.png
│ │ ├── testHidesValues_tvOS_1920.0_1080.0.png
│ │ ├── testZeroValues_iOS_320.0_568.0@2x.png
│ │ ├── testZeroValues_iOS_375.0_667.0@2x.png
│ │ ├── testZeroValues_iOS_414.0_736.0@3x.png
│ │ ├── testZeroValues_iOS_768.0_1024.0@2x.png
│ │ ├── testZeroValues_iOS_834.0_1112.0@2x.png
│ │ ├── testZeroValues_tvOS_1920.0_1080.0.png
│ │ ├── testDefaultValues_iOS_320.0_568.0@2x.png
│ │ ├── testDefaultValues_iOS_375.0_667.0@2x.png
│ │ ├── testDefaultValues_iOS_414.0_736.0@3x.png
│ │ ├── testDefaultValues_tvOS_1920.0_1080.0.png
│ │ ├── testHideLeftAxis_iOS_320.0_568.0@2x.png
│ │ ├── testHideLeftAxis_iOS_375.0_667.0@2x.png
│ │ ├── testHideLeftAxis_iOS_414.0_736.0@3x.png
│ │ ├── testHideLeftAxis_iOS_768.0_1024.0@2x.png
│ │ ├── testHideLeftAxis_iOS_834.0_1112.0@2x.png
│ │ ├── testHideLeftAxis_tvOS_1920.0_1080.0.png
│ │ ├── testHideRightAxis_iOS_320.0_568.0@2x.png
│ │ ├── testHideRightAxis_iOS_375.0_667.0@2x.png
│ │ ├── testHideRightAxis_iOS_414.0_736.0@3x.png
│ │ ├── testHideRightAxis_tvOS_1920.0_1080.0.png
│ │ ├── testHidesValues_iOS_1024.0_1366.0@2x.png
│ │ ├── testHidesValues_iOS_768.0_1024.0@2x.png
│ │ ├── testHidesValues_iOS_834.0_1112.0@2x.png
│ │ ├── testZeroValues_iOS_1024.0_1366.0@2x.png
│ │ ├── testDefaultValues_iOS_1024.0_1366.0@2x.png
│ │ ├── testDefaultValues_iOS_768.0_1024.0@2x.png
│ │ ├── testDefaultValues_iOS_834.0_1112.0@2x.png
│ │ ├── testHideLeftAxis_iOS_1024.0_1366.0@2x.png
│ │ ├── testHideRightAxis_iOS_1024.0_1366.0@2x.png
│ │ ├── testHideRightAxis_iOS_768.0_1024.0@2x.png
│ │ ├── testHideRightAxis_iOS_834.0_1112.0@2x.png
│ │ ├── testInvertedLeftAxis_iOS_320.0_568.0@2x.png
│ │ ├── testInvertedLeftAxis_iOS_375.0_667.0@2x.png
│ │ ├── testInvertedLeftAxis_iOS_414.0_736.0@3x.png
│ │ ├── testInvertedLeftAxis_tvOS_1920.0_1080.0.png
│ │ ├── testNegativeValues_iOS_1024.0_1366.0@2x.png
│ │ ├── testNegativeValues_iOS_320.0_568.0@2x.png
│ │ ├── testNegativeValues_iOS_375.0_667.0@2x.png
│ │ ├── testNegativeValues_iOS_414.0_736.0@3x.png
│ │ ├── testNegativeValues_iOS_768.0_1024.0@2x.png
│ │ ├── testNegativeValues_iOS_834.0_1112.0@2x.png
│ │ ├── testNegativeValues_tvOS_1920.0_1080.0.png
│ │ ├── testPositiveValues_iOS_1024.0_1366.0@2x.png
│ │ ├── testPositiveValues_iOS_320.0_568.0@2x.png
│ │ ├── testPositiveValues_iOS_375.0_667.0@2x.png
│ │ ├── testPositiveValues_iOS_414.0_736.0@3x.png
│ │ ├── testPositiveValues_iOS_768.0_1024.0@2x.png
│ │ ├── testPositiveValues_iOS_834.0_1112.0@2x.png
│ │ ├── testPositiveValues_tvOS_1920.0_1080.0.png
│ │ ├── testInvertedLeftAxis_iOS_1024.0_1366.0@2x.png
│ │ ├── testInvertedLeftAxis_iOS_768.0_1024.0@2x.png
│ │ ├── testInvertedLeftAxis_iOS_834.0_1112.0@2x.png
│ │ ├── testInvertedRightAxis_iOS_320.0_568.0@2x.png
│ │ ├── testInvertedRightAxis_iOS_375.0_667.0@2x.png
│ │ ├── testInvertedRightAxis_iOS_414.0_736.0@3x.png
│ │ ├── testInvertedRightAxis_iOS_768.0_1024.0@2x.png
│ │ ├── testInvertedRightAxis_iOS_834.0_1112.0@2x.png
│ │ ├── testInvertedRightAxis_tvOS_1920.0_1080.0.png
│ │ ├── testHideVerticalGridlines_iOS_320.0_568.0@2x.png
│ │ ├── testHideVerticalGridlines_iOS_375.0_667.0@2x.png
│ │ ├── testHideVerticalGridlines_iOS_414.0_736.0@3x.png
│ │ ├── testHideVerticalGridlines_tvOS_1920.0_1080.0.png
│ │ ├── testInvertedRightAxis_iOS_1024.0_1366.0@2x.png
│ │ ├── testHideHorizontalGridlines_iOS_320.0_568.0@2x.png
│ │ ├── testHideHorizontalGridlines_iOS_375.0_667.0@2x.png
│ │ ├── testHideHorizontalGridlines_iOS_414.0_736.0@3x.png
│ │ ├── testHideHorizontalGridlines_tvOS_1920.0_1080.0.png
│ │ ├── testHideVerticalGridlines_iOS_1024.0_1366.0@2x.png
│ │ ├── testHideVerticalGridlines_iOS_768.0_1024.0@2x.png
│ │ ├── testHideVerticalGridlines_iOS_834.0_1112.0@2x.png
│ │ ├── testHideHorizontalGridlines_iOS_1024.0_1366.0@2x.png
│ │ ├── testHideHorizontalGridlines_iOS_768.0_1024.0@2x.png
│ │ ├── testHideHorizontalGridlines_iOS_834.0_1112.0@2x.png
│ │ ├── testInvertedLeftAxisWithNegativeValues_iOS_375.0_667.0@2x.png
│ │ ├── testInvertedLeftAxisWithNegativeValues_tvOS_1920.0_1080.0.png
│ │ ├── testInvertedLeftAxisWithPositiveValues_iOS_375.0_667.0@2x.png
│ │ ├── testInvertedLeftAxisWithPositiveValues_tvOS_1920.0_1080.0.png
│ │ ├── testInvertedRightAxisWithNegativeValues_iOS_375.0_667.0@2x.png
│ │ ├── testInvertedRightAxisWithNegativeValues_tvOS_1920.0_1080.0.png
│ │ ├── testInvertedRightAxisWithPositiveValues_iOS_375.0_667.0@2x.png
│ │ ├── testInvertedRightAxisWithPositiveValues_tvOS_1920.0_1080.0.png
│ │ ├── testNegativeValuesWithCustomAxisMaximum2_iOS_375.0_667.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMaximum2_tvOS_1920.0_1080.0.png
│ │ ├── testNegativeValuesWithCustomAxisMaximum_iOS_320.0_568.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMaximum_iOS_375.0_667.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMaximum_iOS_414.0_736.0@3x.png
│ │ ├── testNegativeValuesWithCustomAxisMaximum_iOS_768.0_1024.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMaximum_iOS_834.0_1112.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMaximum_tvOS_1920.0_1080.0.png
│ │ ├── testNegativeValuesWithCustomAxisMinimum2_iOS_375.0_667.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMinimum2_tvOS_1920.0_1080.0.png
│ │ ├── testNegativeValuesWithCustomAxisMinimum_iOS_320.0_568.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMinimum_iOS_375.0_667.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMinimum_iOS_414.0_736.0@3x.png
│ │ ├── testNegativeValuesWithCustomAxisMinimum_iOS_768.0_1024.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMinimum_iOS_834.0_1112.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMinimum_tvOS_1920.0_1080.0.png
│ │ ├── testPositiveValuesWithCustomAxisMaximum2_iOS_375.0_667.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMaximum2_tvOS_1920.0_1080.0.png
│ │ ├── testPositiveValuesWithCustomAxisMaximum_iOS_320.0_568.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMaximum_iOS_375.0_667.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMaximum_iOS_414.0_736.0@3x.png
│ │ ├── testPositiveValuesWithCustomAxisMaximum_iOS_768.0_1024.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMaximum_iOS_834.0_1112.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMaximum_tvOS_1920.0_1080.0.png
│ │ ├── testPositiveValuesWithCustomAxisMinimum2_iOS_375.0_667.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMinimum2_tvOS_1920.0_1080.0.png
│ │ ├── testPositiveValuesWithCustomAxisMinimum_iOS_320.0_568.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMinimum_iOS_375.0_667.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMinimum_iOS_414.0_736.0@3x.png
│ │ ├── testPositiveValuesWithCustomAxisMinimum_iOS_768.0_1024.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMinimum_iOS_834.0_1112.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMinimum_tvOS_1920.0_1080.0.png
│ │ ├── testNegativeValuesWithCustomAxisMaximum_iOS_1024.0_1366.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMinimum_iOS_1024.0_1366.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMaximum_iOS_1024.0_1366.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMinimum_iOS_1024.0_1366.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_320.0_568.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_375.0_667.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_414.0_736.0@3x.png
│ │ ├── testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_768.0_1024.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_834.0_1112.0@2x.png
│ │ ├── testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_tvOS_1920.0_1080.0.png
│ │ ├── testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_320.0_568.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_375.0_667.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_414.0_736.0@3x.png
│ │ ├── testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_768.0_1024.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_834.0_1112.0@2x.png
│ │ ├── testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_tvOS_1920.0_1080.0.png
│ │ ├── testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_1024.0_1366.0@2x.png
│ │ └── testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_1024.0_1366.0@2x.png
│ ├── ChartsTests.PieChartTests
│ │ ├── testDrawIcons_iOS_375.0_667.0@2x.png
│ │ ├── testDrawIcons_tvOS_1920.0_1080.0.png
│ │ ├── testHidesValues_iOS_375.0_667.0@2x.png
│ │ ├── testHidesValues_tvOS_1920.0_1080.0.png
│ │ ├── testDefaultValues_iOS_375.0_667.0@2x.png
│ │ ├── testDefaultValues_tvOS_1920.0_1080.0.png
│ │ ├── testDrawCenterLabel_iOS_375.0_667.0@2x.png
│ │ ├── testHideCenterLabel_iOS_375.0_667.0@2x.png
│ │ └── testHideCenterLabel_tvOS_1920.0_1080.0.png
│ └── ChartsTests.CombinedChartTests
│ │ ├── testDefaultAxisDependency_iOS_375.0_667.0@2x.png
│ │ ├── testDefaultAxisDependency_tvOS_1920.0_1080.0.png
│ │ ├── testAllRightAxisDependency_iOS_375.0_667.0@2x.png
│ │ ├── testAllRightAxisDependency_tvOS_1920.0_1080.0.png
│ │ ├── testLeftRightAxisDependency_iOS_375.0_667.0@2x.png
│ │ └── testLeftRightAxisDependency_tvOS_1920.0_1080.0.png
└── Charts
│ ├── Snapshot.swift
│ ├── EquatableTests.swift
│ └── ChartUtilsTests.swift
├── ChartsDemo-iOS
├── Resources
│ ├── Images.xcassets
│ │ ├── Contents.json
│ │ ├── icon.imageset
│ │ │ ├── star.png
│ │ │ ├── star-1.png
│ │ │ ├── star-2.png
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ ├── Icon-29@2x.png
│ │ │ ├── Icon-29@3x.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── iTunesArtwork@2x.png
│ │ │ └── Contents.json
│ └── markers
│ │ └── radar_marker@3x.png
├── Supporting Files
│ ├── ChartsDemo-Bridging-Header.h
│ ├── main.m
│ └── Info.plist
├── Objective-C
│ ├── Formatters
│ │ ├── IntAxisValueFormatter.h
│ │ ├── DayAxisValueFormatter.h
│ │ ├── IntAxisValueFormatter.m
│ │ ├── DateValueFormatter.h
│ │ ├── DateValueFormatter.m
│ │ └── LargeValueFormatter.swift
│ ├── Demos
│ │ ├── PiePolylineChartViewController.h
│ │ ├── BubbleChartViewController.h
│ │ ├── BarChartViewController.h
│ │ ├── PieChartViewController.h
│ │ ├── LineChart1ViewController.h
│ │ ├── LineChart2ViewController.h
│ │ ├── RadarChartViewController.h
│ │ ├── CombinedChartViewController.h
│ │ ├── HalfPieChartViewController.h
│ │ ├── LineChartTimeViewController.h
│ │ ├── ScatterChartViewController.h
│ │ ├── SinusBarChartViewController.h
│ │ ├── CubicLineChartViewController.h
│ │ ├── AnotherBarChartViewController.h
│ │ ├── CandleStickChartViewController.h
│ │ ├── ColoredLineChartViewController.h
│ │ ├── LineChartFilledViewController.h
│ │ ├── MultipleBarChartViewController.h
│ │ ├── StackedBarChartViewController.h
│ │ ├── HorizontalBarChartViewController.h
│ │ ├── MultipleLinesChartViewController.h
│ │ ├── NegativeStackedBarChartViewController.h
│ │ └── PositiveNegativeBarChartViewController.h
│ ├── DemoListViewController.h
│ ├── AppDelegate.h
│ ├── Components
│ │ ├── RadarMarkerView.swift
│ │ └── XYMarkerView.swift
│ └── DemoBaseViewController.h
└── Swift
│ ├── Formatters
│ ├── IntAxisValueFormatter.swift
│ ├── DateValueFormatter.swift
│ └── LargeValueFormatter.swift
│ └── Components
│ ├── RadarMarkerView.swift
│ └── XYMarkerView.swift
├── Gemfile
├── ChartsDemo-macOS
├── PlaygroundChart.playground
│ ├── Contents.o
│ ├── Pages
│ │ ├── Menu.xcplaygroundpage
│ │ │ ├── Resources
│ │ │ │ └── feature_graphic.png
│ │ │ └── Contents.swift
│ │ └── BarChart.xcplaygroundpage
│ │ │ └── Contents.swift
│ └── contents.xcplayground
└── ChartsDemo-macOS
│ ├── AppDelegate.swift
│ ├── Info.plist
│ ├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
│ └── Demos
│ ├── RadarDemoViewController.swift
│ └── LineDemoViewController.swift
├── Charts.xcworkspace
├── xcshareddata
│ └── IDEWorkspaceChecks.plist
└── contents.xcworkspacedata
├── Package.swift
├── Source
├── Charts
│ ├── Interfaces
│ │ ├── BubbleChartDataProvider.swift
│ │ ├── CandleChartDataProvider.swift
│ │ ├── ScatterChartDataProvider.swift
│ │ ├── LineChartDataProvider.swift
│ │ ├── CombinedChartDataProvider.swift
│ │ ├── BarChartDataProvider.swift
│ │ ├── BarLineScatterCandleBubbleChartDataProvider.swift
│ │ └── ChartDataProvider.swift
│ ├── Data
│ │ ├── Implementations
│ │ │ └── Standard
│ │ │ │ ├── CandleChartData.swift
│ │ │ │ ├── BarLineScatterCandleBubbleChartData.swift
│ │ │ │ ├── LineChartData.swift
│ │ │ │ ├── BubbleChartData.swift
│ │ │ │ ├── ScatterChartData.swift
│ │ │ │ ├── BarLineScatterCandleBubbleChartDataSet.swift
│ │ │ │ ├── RadarChartDataEntry.swift
│ │ │ │ ├── RadarChartData.swift
│ │ │ │ ├── BubbleChartDataSet.swift
│ │ │ │ ├── RadarChartDataSet.swift
│ │ │ │ └── LineScatterCandleRadarChartDataSet.swift
│ │ └── Interfaces
│ │ │ ├── IBubbleChartDataSet.swift
│ │ │ ├── IBarLineScatterCandleBubbleChartDataSet.swift
│ │ │ ├── IScatterChartDataSet.swift
│ │ │ ├── IRadarChartDataSet.swift
│ │ │ ├── ILineScatterCandleRadarChartDataSet.swift
│ │ │ ├── IBarChartDataSet.swift
│ │ │ ├── ILineRadarChartDataSet.swift
│ │ │ └── ICandleChartDataSet.swift
│ ├── Highlight
│ │ ├── IHighlighter.swift
│ │ ├── PieHighlighter.swift
│ │ ├── Range.swift
│ │ ├── PieRadarHighlighter.swift
│ │ └── HorizontalBarHighlighter.swift
│ ├── Renderers
│ │ ├── Renderer.swift
│ │ ├── Scatter
│ │ │ ├── IShapeRenderer.swift
│ │ │ ├── CrossShapeRenderer.swift
│ │ │ ├── XShapeRenderer.swift
│ │ │ ├── ChevronUpShapeRenderer.swift
│ │ │ └── ChevronDownShapeRenderer.swift
│ │ ├── LineRadarRenderer.swift
│ │ └── LineScatterCandleRadarRenderer.swift
│ ├── Charts
│ │ ├── BubbleChartView.swift
│ │ ├── LineChartView.swift
│ │ ├── ScatterChartView.swift
│ │ └── CandleStickChartView.swift
│ ├── Formatters
│ │ ├── IFillFormatter.swift
│ │ ├── IAxisValueFormatter.swift
│ │ ├── IValueFormatter.swift
│ │ ├── IndexAxisValueFormatter.swift
│ │ └── DefaultFillFormatter.swift
│ ├── Jobs
│ │ ├── MoveViewJob.swift
│ │ ├── AnimatedMoveViewJob.swift
│ │ ├── ViewPortJob.swift
│ │ └── ZoomViewJob.swift
│ ├── Components
│ │ ├── ComponentBase.swift
│ │ ├── Description.swift
│ │ ├── IMarker.swift
│ │ └── ChartLimitLine.swift
│ └── Utils
│ │ └── TransformerHorizontalBarChart.swift
└── Supporting Files
│ ├── Charts.h
│ └── Info.plist
├── .github
├── PULL_REQUEST_TEMPLATE.md
└── ISSUE_TEMPLATE.md
├── scripts
├── build-dependencies.sh
└── copy-carthage-frameworks.sh
├── Charts.podspec
├── .travis.yml
└── .gitignore
/Cartfile:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Cartfile.private:
--------------------------------------------------------------------------------
1 | github "facebook/ios-snapshot-test-case" "master"
2 |
--------------------------------------------------------------------------------
/Assets/feature_graphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Assets/feature_graphic.png
--------------------------------------------------------------------------------
/Assets/feature_graphic.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Assets/feature_graphic.psd
--------------------------------------------------------------------------------
/Cartfile.resolved:
--------------------------------------------------------------------------------
1 | github "facebook/ios-snapshot-test-case" "ed4e6a6e81bfb69a5223156e6c3d389a416cf6e3"
2 |
--------------------------------------------------------------------------------
/Tests/Supporting Files/Media.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | gem 'cocoapods', '>= 1.6.0.beta.1'
4 | gem 'github_changelog_generator'
5 | gem 'rake'
6 | gem 'xcpretty'
7 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/markers/radar_marker@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-iOS/Resources/markers/radar_marker@3x.png
--------------------------------------------------------------------------------
/ChartsDemo-macOS/PlaygroundChart.playground/Contents.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-macOS/PlaygroundChart.playground/Contents.o
--------------------------------------------------------------------------------
/ChartsDemo-macOS/ChartsDemo-macOS/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 |
3 | @NSApplicationMain
4 | class AppDelegate: NSObject, NSApplicationDelegate
5 | {
6 | }
7 |
8 |
--------------------------------------------------------------------------------
/Tests/Supporting Files/Media.xcassets/icon.imageset/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/Supporting Files/Media.xcassets/icon.imageset/star.png
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/icon.imageset/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-iOS/Resources/Images.xcassets/icon.imageset/star.png
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Supporting Files/ChartsDemo-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
5 |
--------------------------------------------------------------------------------
/Tests/Supporting Files/Media.xcassets/icon.imageset/star-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/Supporting Files/Media.xcassets/icon.imageset/star-1.png
--------------------------------------------------------------------------------
/Tests/Supporting Files/Media.xcassets/icon.imageset/star-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/Supporting Files/Media.xcassets/icon.imageset/star-2.png
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/icon.imageset/star-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-iOS/Resources/Images.xcassets/icon.imageset/star-1.png
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/icon.imageset/star-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-iOS/Resources/Images.xcassets/icon.imageset/star-2.png
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDrawIcons_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testIsCubic_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testDrawIcons_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testDrawIcons_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testDrawIcons_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testDrawIcons_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testHidesValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testHidesValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testHidesValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testHidesValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHidesValues_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testZeroValues_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDrawIcons_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testDefaultValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testDefaultValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testDefaultValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testDefaultValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testDefaultValues_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideLeftAxis_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideRightAxis_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDefaultValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testHidesValues_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testDrawCenterLabel_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testDrawCenterLabel_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testHideCenterLabel_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testHideCenterLabel_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testHideCenterLabel_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.PieChartTests/testHideCenterLabel_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxis_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxis_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircles_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/ChartsDemo-macOS/PlaygroundChart.playground/Pages/Menu.xcplaygroundpage/Resources/feature_graphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/ChartsDemo-macOS/PlaygroundChart.playground/Pages/Menu.xcplaygroundpage/Resources/feature_graphic.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideVerticalGridlines_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.LineChartTests/testDoesntDrawCircleHole_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testHideHorizontalGridlines_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testDefaultAxisDependency_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testDefaultAxisDependency_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testDefaultAxisDependency_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testDefaultAxisDependency_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testAllRightAxisDependency_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testAllRightAxisDependency_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testAllRightAxisDependency_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testAllRightAxisDependency_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testLeftRightAxisDependency_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testLeftRightAxisDependency_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testLeftRightAxisDependency_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.CombinedChartTests/testLeftRightAxisDependency_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxisWithNegativeValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxisWithNegativeValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxisWithNegativeValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxisWithNegativeValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxisWithPositiveValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxisWithPositiveValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxisWithPositiveValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedLeftAxisWithPositiveValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxisWithNegativeValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxisWithNegativeValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxisWithNegativeValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxisWithNegativeValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxisWithPositiveValues_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxisWithPositiveValues_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxisWithPositiveValues_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testInvertedRightAxisWithPositiveValues_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum2_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum2_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum2_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum2_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum2_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum2_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum2_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum2_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum2_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum2_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum2_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum2_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum2_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum2_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum2_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum2_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximum_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMinimum_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximum_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMinimum_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_320.0_568.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_320.0_568.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_375.0_667.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_375.0_667.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_414.0_736.0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_414.0_736.0@3x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_768.0_1024.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_768.0_1024.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_834.0_1112.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_834.0_1112.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_tvOS_1920.0_1080.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_tvOS_1920.0_1080.0.png
--------------------------------------------------------------------------------
/Charts.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testNegativeValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_1024.0_1366.0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-archive/Charts/master/Tests/ReferenceImages_64/ChartsTests.BarChartTests/testPositiveValuesWithCustomAxisMaximumAndCustomAxisMaximum_iOS_1024.0_1366.0@2x.png
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Formatters/IntAxisValueFormatter.h:
--------------------------------------------------------------------------------
1 | //
2 | // IntAxisValueFormatter.h
3 | // ChartsDemo
4 | // Copyright © 2016 dcg. All rights reserved.
5 | //
6 |
7 | #import
8 | #import "ChartsDemo_iOS-Swift.h"
9 |
10 | @interface IntAxisValueFormatter : NSObject
11 |
12 | @end
13 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/PiePolylineChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // PiePolylineChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Created by Jack Wang on 3/21/16.
6 | // Copyright © 2016 Jack Wang
7 | //
8 |
9 | #import "PieChartViewController.h"
10 |
11 | @interface PiePolylineChartViewController : DemoBaseViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Formatters/DayAxisValueFormatter.h:
--------------------------------------------------------------------------------
1 | //
2 | // DayAxisValueFormatter.h
3 | // ChartsDemo
4 | // Copyright © 2016 dcg. All rights reserved.
5 | //
6 |
7 | #import
8 | #import "ChartsDemo_iOS-Swift.h"
9 |
10 | @interface DayAxisValueFormatter : NSObject
11 |
12 | - (id)initForChart:(BarLineChartViewBase *)chart;
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/Charts.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/DemoListViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // DemoListViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 |
14 | @interface DemoListViewController : UIViewController
15 |
16 |
17 | @end
18 |
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Formatters/IntAxisValueFormatter.m:
--------------------------------------------------------------------------------
1 | //
2 | // IntAxisValueFormatter.m
3 | // ChartsDemo
4 | // Copyright © 2016 dcg. All rights reserved.
5 | //
6 |
7 | #import "IntAxisValueFormatter.h"
8 |
9 | @implementation IntAxisValueFormatter
10 | {
11 | }
12 |
13 | - (NSString *)stringForValue:(double)value
14 | axis:(ChartAxisBase *)axis
15 | {
16 | return [@((NSInteger)value) stringValue];
17 | }
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 |
14 | @interface AppDelegate : UIResponder
15 |
16 | @property (strong, nonatomic) UIWindow *window;
17 |
18 |
19 | @end
20 |
21 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Formatters/DateValueFormatter.h:
--------------------------------------------------------------------------------
1 | //
2 | // DateValueFormatter.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "ChartsDemo_iOS-Swift.h"
14 |
15 | @interface DateValueFormatter : NSObject
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:4.0
2 | // The swift-tools-version declares the minimum version of Swift required to build this package.
3 | import PackageDescription
4 |
5 | let package = Package(
6 | name: "Charts",
7 | products: [
8 | .library(name: "Charts", type: .dynamic, targets: ["Charts"])
9 | ],
10 | dependencies: [],
11 | targets: [
12 | .target(name: "Charts", dependencies: [])
13 | ],
14 | swiftLanguageVersions: [5]
15 | )
16 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Swift/Formatters/IntAxisValueFormatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IntAxisValueFormatter.swift
3 | // ChartsDemo-iOS
4 | //
5 | // Created by Jacob Christie on 2017-07-09.
6 | // Copyright © 2017 jc. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import Charts
11 |
12 | public class IntAxisValueFormatter: NSObject, IAxisValueFormatter {
13 | public func stringForValue(_ value: Double, axis: AxisBase?) -> String {
14 | return "\(Int(value))"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/BubbleChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // BubbleChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Bubble chart implementation:
6 | // Copyright 2015 Pierre-Marc Airoldi
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface BubbleChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/BarChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // BarChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface BarChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/PieChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // PieChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface PieChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/LineChart1ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // LineChart1ViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface LineChart1ViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/LineChart2ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // LineChart2ViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface LineChart2ViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/RadarChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // RadarChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface RadarChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/CombinedChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CombinedChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface CombinedChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/HalfPieChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // HalfPieChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface HalfPieChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/LineChartTimeViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // LineChartTimeViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface LineChartTimeViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/ScatterChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ScatterChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface ScatterChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/SinusBarChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // SinusBarChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface SinusBarChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Tests/Supporting Files/Media.xcassets/icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "star-2.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "star-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "star.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/CubicLineChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CubicLineChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface CubicLineChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "star-2.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "star-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "star.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Supporting Files/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "AppDelegate.h"
14 |
15 | int main(int argc, char * argv[]) {
16 | @autoreleasepool {
17 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/AnotherBarChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // AnotherBarChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface AnotherBarChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/CandleStickChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CandleStickChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface CandleStickChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/ColoredLineChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ColoredLineChartViewController.m
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface ColoredLineChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/LineChartFilledViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // LineChartFilledViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface LineChartFilledViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/MultipleBarChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MultipleBarChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface MultipleBarChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/StackedBarChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // StackedBarChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface StackedBarChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Source/Charts/Interfaces/BubbleChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BubbleChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol BubbleChartDataProvider: BarLineScatterCandleBubbleChartDataProvider
17 | {
18 | var bubbleData: BubbleChartData? { get }
19 | }
--------------------------------------------------------------------------------
/Source/Charts/Interfaces/CandleChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CandleChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol CandleChartDataProvider: BarLineScatterCandleBubbleChartDataProvider
17 | {
18 | var candleData: CandleChartData? { get }
19 | }
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ### Issue Link :link:
2 |
3 |
4 | ### Goals :soccer:
5 |
6 |
7 |
8 | ### Implementation Details :construction:
9 |
10 |
11 |
12 | ### Testing Details :mag:
13 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/HorizontalBarChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // HorizontalBarChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface HorizontalBarChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/MultipleLinesChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // MultipleLinesChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface MultipleLinesChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Source/Charts/Interfaces/ScatterChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ScatterChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol ScatterChartDataProvider: BarLineScatterCandleBubbleChartDataProvider
17 | {
18 | var scatterData: ScatterChartData? { get }
19 | }
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/NegativeStackedBarChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // NegativeStackedBarChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface NegativeStackedBarChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Demos/PositiveNegativeBarChartViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // PositiveNegativeBarChartViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "DemoBaseViewController.h"
14 | #import
15 |
16 | @interface PositiveNegativeBarChartViewController : DemoBaseViewController
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/Tests/Charts/Snapshot.swift:
--------------------------------------------------------------------------------
1 | import CoreGraphics
2 |
3 | public struct Snapshot
4 | {
5 | public static let tolerance: CGFloat = 0.01
6 |
7 | public static func identifier(_ size: CGSize) -> String {
8 | #if os(tvOS)
9 | let identifier = "tvOS"
10 | #elseif os(iOS)
11 | let identifier = "iOS"
12 | #elseif os(OSX)
13 | let identifier = "macOS"
14 | #else
15 | let identifier = ""
16 | #endif
17 |
18 | return "\(identifier)_\(size.width)_\(size.height)"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Source/Charts/Interfaces/LineChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LineChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol LineChartDataProvider: BarLineScatterCandleBubbleChartDataProvider
17 | {
18 | var lineData: LineChartData? { get }
19 |
20 | func getAxis(_ axis: YAxis.AxisDependency) -> YAxis
21 | }
22 |
--------------------------------------------------------------------------------
/Source/Charts/Interfaces/CombinedChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CombinedChartDataProvider.swoft
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol CombinedChartDataProvider: LineChartDataProvider, BarChartDataProvider, BubbleChartDataProvider, CandleChartDataProvider, ScatterChartDataProvider
17 | {
18 | var combinedData: CombinedChartData? { get }
19 | }
--------------------------------------------------------------------------------
/Source/Charts/Data/Implementations/Standard/CandleChartData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CandleChartData.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | open class CandleChartData: BarLineScatterCandleBubbleChartData
15 | {
16 | public override init()
17 | {
18 | super.init()
19 | }
20 |
21 | public override init(dataSets: [IChartDataSet]?)
22 | {
23 | super.init(dataSets: dataSets)
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/ChartsDemo-macOS/PlaygroundChart.playground/contents.xcplayground:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Source/Charts/Highlight/IHighlighter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IHighlighter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(IChartHighlighter)
16 | public protocol IHighlighter: class
17 | {
18 | /// - Parameters:
19 | /// - x:
20 | /// - y:
21 | /// - Returns: A Highlight object corresponding to the given x- and y- touch positions in pixels.
22 | func getHighlight(x: CGFloat, y: CGFloat) -> Highlight?
23 | }
24 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BarLineScatterCandleBubbleChartData.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | open class BarLineScatterCandleBubbleChartData: ChartData
15 | {
16 | public override init()
17 | {
18 | super.init()
19 | }
20 |
21 | public override init(dataSets: [IChartDataSet]?)
22 | {
23 | super.init(dataSets: dataSets)
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Source/Charts/Interfaces/BarChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BarChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol BarChartDataProvider: BarLineScatterCandleBubbleChartDataProvider
17 | {
18 | var barData: BarChartData? { get }
19 |
20 | var isDrawBarShadowEnabled: Bool { get }
21 | var isDrawValueAboveBarEnabled: Bool { get }
22 | var isHighlightFullBarEnabled: Bool { get }
23 | }
--------------------------------------------------------------------------------
/Source/Charts/Data/Implementations/Standard/LineChartData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LineChartData.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | /// Data object that encapsulates all data associated with a LineChart.
15 | open class LineChartData: ChartData
16 | {
17 | public override init()
18 | {
19 | super.init()
20 | }
21 |
22 | public override init(dataSets: [IChartDataSet]?)
23 | {
24 | super.init(dataSets: dataSets)
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Swift/Formatters/DateValueFormatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DateValueFormatter.swift
3 | // ChartsDemo-iOS
4 | //
5 | // Created by Jacob Christie on 2017-07-09.
6 | // Copyright © 2017 jc. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import Charts
11 |
12 | public class DateValueFormatter: NSObject, IAxisValueFormatter {
13 | private let dateFormatter = DateFormatter()
14 |
15 | override init() {
16 | super.init()
17 | dateFormatter.dateFormat = "dd MMM HH:mm"
18 | }
19 |
20 | public func stringForValue(_ value: Double, axis: AxisBase?) -> String {
21 | return dateFormatter.string(from: Date(timeIntervalSince1970: value))
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Source/Charts/Renderers/Renderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Renderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(ChartRenderer)
16 | open class Renderer: NSObject
17 | {
18 | /// the component that handles the drawing area of the chart and it's offsets
19 | @objc public let viewPortHandler: ViewPortHandler
20 |
21 | @objc public init(viewPortHandler: ViewPortHandler)
22 | {
23 | self.viewPortHandler = viewPortHandler
24 | super.init()
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Source/Charts/Interfaces/BarLineScatterCandleBubbleChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BarLineScatterCandleBubbleChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol BarLineScatterCandleBubbleChartDataProvider: ChartDataProvider
17 | {
18 | func getTransformer(forAxis: YAxis.AxisDependency) -> Transformer
19 | func isInverted(axis: YAxis.AxisDependency) -> Bool
20 |
21 | var lowestVisibleX: Double { get }
22 | var highestVisibleX: Double { get }
23 | }
24 |
--------------------------------------------------------------------------------
/scripts/build-dependencies.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | function build_dependencies {
4 |
5 | has_dependencies=$(ls Carthage/Build/**/*.framework 2> /dev/null | wc -l)
6 |
7 | if [ $has_dependencies != 0 ]
8 | then
9 | echo "Depencies have already been built."
10 | else
11 | echo "Building dependencies..."
12 | carthage bootstrap
13 | fi
14 | }
15 |
16 | function alert_to_install_carthage {
17 | echo "error: Carthage was not found! In order to build Charts you need to use Carthage to build its dependencies. Carthage can be downloaded from https://github.com/Carthage/Carthage."
18 | exit 1
19 | }
20 |
21 | if hash carthage 2>/dev/null
22 | then
23 | build_dependencies
24 | else
25 | alert_to_install_carthage
26 | fi
27 |
--------------------------------------------------------------------------------
/scripts/copy-carthage-frameworks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | case "$PLATFORM_NAME" in
4 | macosx) plat=Mac;;
5 | iphone*) plat=iOS;;
6 | watch*) plat=watchOS;;
7 | appletv*) plat=tvOS;;
8 | *) echo "error: Unknown PLATFORM_NAME: $PLATFORM_NAME"; exit 1;;
9 | esac
10 |
11 | for (( n = 0; n < SCRIPT_INPUT_FILE_COUNT; n++ )); do
12 | VAR=SCRIPT_INPUT_FILE_$n
13 | framework=$(basename "${!VAR}")
14 | export SCRIPT_INPUT_FILE_$n="$SRCROOT"/Carthage/Build/$plat/"$framework"
15 | done
16 |
17 | /usr/local/bin/carthage copy-frameworks || exit
18 |
19 | for (( n = 0; n < SCRIPT_INPUT_FILE_COUNT; n++ )); do
20 | VAR=SCRIPT_INPUT_FILE_$n
21 | source=${!VAR}.dSYM
22 | dest=${BUILT_PRODUCTS_DIR}/$(basename "$source")
23 | ditto "$source" "$dest" || exit
24 | done
--------------------------------------------------------------------------------
/Source/Charts/Charts/BubbleChartView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BubbleChartView.swift
3 | // Charts
4 | //
5 | // Bubble chart implementation:
6 | // Copyright 2015 Pierre-Marc Airoldi
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | open class BubbleChartView: BarLineChartViewBase, BubbleChartDataProvider
16 | {
17 | open override func initialize()
18 | {
19 | super.initialize()
20 |
21 | renderer = BubbleChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler)
22 | }
23 |
24 | // MARK: - BubbleChartDataProvider
25 |
26 | open var bubbleData: BubbleChartData? { return _data as? BubbleChartData }
27 | }
28 |
--------------------------------------------------------------------------------
/Charts.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = "Charts"
3 | s.version = "3.2.2"
4 | s.summary = "Charts is a powerful & easy to use chart library for iOS, tvOS and OSX (and Android)"
5 | s.homepage = "https://github.com/danielgindi/Charts"
6 | s.license = { :type => "Apache License, Version 2.0", :file => "LICENSE" }
7 | s.authors = "Daniel Cohen Gindi", "Philipp Jahoda"
8 | s.ios.deployment_target = "8.0"
9 | s.tvos.deployment_target = "9.0"
10 | s.osx.deployment_target = "10.11"
11 | s.source = { :git => "https://github.com/danielgindi/Charts.git", :tag => "v#{s.version}" }
12 | s.default_subspec = "Core"
13 | s.swift_version = '4.2'
14 | s.cocoapods_version = '>= 1.5.0'
15 |
16 | s.subspec "Core" do |ss|
17 | ss.source_files = "Source/Charts/**/*.swift"
18 | end
19 | end
20 |
--------------------------------------------------------------------------------
/Source/Charts/Formatters/IFillFormatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IFillFormatter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | /// Protocol for providing a custom logic to where the filling line of a LineDataSet should end. This of course only works if setFillEnabled(...) is set to true.
16 | @objc(IChartFillFormatter)
17 | public protocol IFillFormatter
18 | {
19 | /// - Returns: The vertical (y-axis) position where the filled-line of the LineDataSet should end.
20 | func getFillLinePosition(dataSet: ILineChartDataSet, dataProvider: LineChartDataProvider) -> CGFloat
21 | }
22 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Interfaces/IBubbleChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IBubbleChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol IBubbleChartDataSet: IBarLineScatterCandleBubbleChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | var maxSize: CGFloat { get }
21 | var isNormalizeSizeEnabled: Bool { get }
22 |
23 | // MARK: - Styling functions and accessors
24 |
25 | /// Sets/gets the width of the circle that surrounds the bubble when highlighted
26 | var highlightCircleWidth: CGFloat { get set }
27 | }
28 |
--------------------------------------------------------------------------------
/Source/Supporting Files/Charts.h:
--------------------------------------------------------------------------------
1 | //
2 | // Charts.h
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #include
13 |
14 | #if TARGET_OS_IPHONE || TARGET_OS_TV || TARGET_IPHONE_SIMULATOR
15 | #import
16 | #else
17 | #import
18 | #endif
19 |
20 | //! Project version number for Charts.
21 | FOUNDATION_EXPORT double ChartsVersionNumber;
22 |
23 | //! Project version string for Charts.
24 | FOUNDATION_EXPORT const unsigned char ChartsVersionString[];
25 |
26 | // In this header, you should import all the public headers of your framework using statements like #import
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Interfaces/IBarLineScatterCandleBubbleChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IBarLineScatterCandleBubbleChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol IBarLineScatterCandleBubbleChartDataSet: IChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | // MARK: - Styling functions and accessors
21 |
22 | var highlightColor: NSUIColor { get set }
23 | var highlightLineWidth: CGFloat { get set }
24 | var highlightLineDashPhase: CGFloat { get set }
25 | var highlightLineDashLengths: [CGFloat]? { get set }
26 | }
27 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Swift/Components/RadarMarkerView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RadarMarkerView.swift
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import Charts
14 |
15 | public class RadarMarkerView: MarkerView {
16 | @IBOutlet var label: UILabel!
17 |
18 | public override func awakeFromNib() {
19 | self.offset.x = -self.frame.size.width / 2.0
20 | self.offset.y = -self.frame.size.height - 7.0
21 | }
22 |
23 | public override func refreshContent(entry: ChartDataEntry, highlight: Highlight) {
24 | label.text = String.init(format: "%d %%", Int(round(entry.y)))
25 | layoutIfNeeded()
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Source/Charts/Charts/LineChartView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LineChartView.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | /// Chart that draws lines, surfaces, circles, ...
16 | open class LineChartView: BarLineChartViewBase, LineChartDataProvider
17 | {
18 | internal override func initialize()
19 | {
20 | super.initialize()
21 |
22 | renderer = LineChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler)
23 | }
24 |
25 | // MARK: - LineChartDataProvider
26 |
27 | open var lineData: LineChartData? { return _data as? LineChartData }
28 | }
29 |
--------------------------------------------------------------------------------
/Tests/Supporting Files/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Source/Charts/Highlight/PieHighlighter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PieHighlighter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(PieChartHighlighter)
16 | open class PieHighlighter: PieRadarHighlighter
17 | {
18 | open override func closestHighlight(index: Int, x: CGFloat, y: CGFloat) -> Highlight?
19 | {
20 | guard
21 | let set = chart?.data?.dataSets[0],
22 | let entry = set.entryForIndex(index)
23 | else { return nil }
24 |
25 | return Highlight(x: Double(index), y: entry.y, xPx: x, yPx: y, dataSetIndex: 0, axis: set.axisDependency)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Components/RadarMarkerView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RadarMarkerView.swift
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import Charts
14 |
15 | open class RadarMarkerView: MarkerView
16 | {
17 | @IBOutlet var label: UILabel?
18 |
19 | open override func awakeFromNib()
20 | {
21 | self.offset.x = -self.frame.size.width / 2.0
22 | self.offset.y = -self.frame.size.height - 7.0
23 | }
24 |
25 | open override func refreshContent(entry: ChartDataEntry, highlight: Highlight)
26 | {
27 | label?.text = String.init(format: "%d %%", Int(round(entry.y)))
28 | layoutIfNeeded()
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Source/Charts/Jobs/MoveViewJob.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MoveViewJob.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(MoveChartViewJob)
16 | open class MoveViewJob: ViewPortJob
17 | {
18 | open override func doJob()
19 | {
20 | guard
21 | let viewPortHandler = viewPortHandler,
22 | let transformer = transformer,
23 | let view = view
24 | else { return }
25 |
26 | var pt = CGPoint(
27 | x: xValue,
28 | y: yValue
29 | )
30 |
31 | transformer.pointValueToPixel(&pt)
32 | viewPortHandler.centerViewPort(pt: pt, chart: view)
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Source/Supporting Files/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 3.2.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ChartsDemo-macOS/PlaygroundChart.playground/Pages/Menu.xcplaygroundpage/Contents.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PlayGround
3 | //
4 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
5 | // Copyright © 2017 thierry Hentic.
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/ios-charts
10 | /*:
11 |
12 | 
13 |
14 |
15 | # Table of contents
16 |
17 | * [Line Chart](LineChart)
18 |
19 | * [Bar Chart](BarChart)
20 |
21 | * [Pie Chart](PieChart)
22 |
23 | * [Radar Chart](RadarChart)
24 |
25 | * [Scatter Chart](ScatterChart)
26 |
27 | * [Combined Chart](CombinedChart)
28 |
29 | * [Horizontal Chart](HorizontalBarChart)
30 |
31 | * [Candle Chart](CandleChart)
32 |
33 | * [Stacked Bar Chart](StackedBarChart)
34 |
35 | * [Bubble Chart](BubbleChart)
36 |
37 |
38 | */
39 | //: [Next Chart](@next)
40 |
41 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Formatters/DateValueFormatter.m:
--------------------------------------------------------------------------------
1 | //
2 | // DateValueFormatter.m
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 |
13 | #import "DateValueFormatter.h"
14 |
15 | @interface DateValueFormatter ()
16 | {
17 | NSDateFormatter *_dateFormatter;
18 | }
19 | @end
20 |
21 | @implementation DateValueFormatter
22 |
23 | - (id)init
24 | {
25 | self = [super init];
26 | if (self)
27 | {
28 | _dateFormatter = [[NSDateFormatter alloc] init];
29 | _dateFormatter.dateFormat = @"dd MMM HH:mm";
30 | }
31 | return self;
32 | }
33 |
34 | - (NSString *)stringForValue:(double)value axis:(ChartAxisBase *)axis
35 | {
36 | return [_dateFormatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:value]];
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Implementations/Standard/BubbleChartData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BubbleChartData.swift
3 | // Charts
4 | //
5 | // Bubble chart implementation:
6 | // Copyright 2015 Pierre-Marc Airoldi
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | open class BubbleChartData: BarLineScatterCandleBubbleChartData
16 | {
17 | public override init()
18 | {
19 | super.init()
20 | }
21 |
22 | public override init(dataSets: [IChartDataSet]?)
23 | {
24 | super.init(dataSets: dataSets)
25 | }
26 |
27 | /// Sets the width of the circle that surrounds the bubble when highlighted for all DataSet objects this data object contains
28 | @objc open func setHighlightCircleWidth(_ width: CGFloat)
29 | {
30 | (_dataSets as? [IBubbleChartDataSet])?.forEach { $0.highlightCircleWidth = width }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Source/Charts/Charts/ScatterChartView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ScatterChartView.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | /// The ScatterChart. Draws dots, triangles, squares and custom shapes into the chartview.
16 | open class ScatterChartView: BarLineChartViewBase, ScatterChartDataProvider
17 | {
18 | open override func initialize()
19 | {
20 | super.initialize()
21 |
22 | renderer = ScatterChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler)
23 |
24 | xAxis.spaceMin = 0.5
25 | xAxis.spaceMax = 0.5
26 | }
27 |
28 | // MARK: - ScatterChartDataProvider
29 |
30 | open var scatterData: ScatterChartData? { return _data as? ScatterChartData }
31 | }
32 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Implementations/Standard/ScatterChartData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ScatterChartData.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | open class ScatterChartData: BarLineScatterCandleBubbleChartData
16 | {
17 | public override init()
18 | {
19 | super.init()
20 | }
21 |
22 | public override init(dataSets: [IChartDataSet]?)
23 | {
24 | super.init(dataSets: dataSets)
25 | }
26 |
27 | /// - Returns: The maximum shape-size across all DataSets.
28 | @objc open func getGreatestShapeSize() -> CGFloat
29 | {
30 | return (_dataSets as? [IScatterChartDataSet])?
31 | .max { $0.scatterShapeSize < $1.scatterShapeSize }?
32 | .scatterShapeSize ?? 0
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Source/Charts/Jobs/AnimatedMoveViewJob.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AnimatedMoveViewJob.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | open class AnimatedMoveViewJob: AnimatedViewPortJob
16 | {
17 | internal override func animationUpdate()
18 | {
19 | guard
20 | let viewPortHandler = viewPortHandler,
21 | let transformer = transformer,
22 | let view = view
23 | else { return }
24 |
25 | var pt = CGPoint(
26 | x: xOrigin + (CGFloat(xValue) - xOrigin) * phase,
27 | y: yOrigin + (CGFloat(yValue) - yOrigin) * phase
28 | )
29 |
30 | transformer.pointValueToPixel(&pt)
31 | viewPortHandler.centerViewPort(pt: pt, chart: view)
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Source/Charts/Charts/CandleStickChartView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CandleStickChartView.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | /// Financial chart type that draws candle-sticks.
16 | open class CandleStickChartView: BarLineChartViewBase, CandleChartDataProvider
17 | {
18 | internal override func initialize()
19 | {
20 | super.initialize()
21 |
22 | renderer = CandleStickChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler)
23 |
24 | self.xAxis.spaceMin = 0.5
25 | self.xAxis.spaceMax = 0.5
26 | }
27 |
28 | // MARK: - CandleChartDataProvider
29 |
30 | open var candleData: CandleChartData?
31 | {
32 | return _data as? CandleChartData
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/DemoBaseViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // DemoBaseViewController.h
3 | // ChartsDemo
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | #import
13 | #import "ChartsDemo_iOS-Swift.h"
14 |
15 | @interface DemoBaseViewController : UIViewController
16 | {
17 | @protected
18 | NSArray *parties;
19 | }
20 |
21 | @property (nonatomic, strong) IBOutlet UIButton *optionsButton;
22 | @property (nonatomic, strong) IBOutlet NSArray *options;
23 |
24 | @property (nonatomic, assign) BOOL shouldHideData;
25 |
26 | - (void)handleOption:(NSString *)key forChartView:(ChartViewBase *)chartView;
27 |
28 | - (void)updateChartData;
29 |
30 | - (void)setupPieChartView:(PieChartView *)chartView;
31 | - (void)setupRadarChartView:(RadarChartView *)chartView;
32 | - (void)setupBarLineChartView:(BarLineChartViewBase *)chartView;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/Source/Charts/Formatters/IAxisValueFormatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IAxisValueFormatter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | /// An interface for providing custom axis Strings.
15 | @objc(IChartAxisValueFormatter)
16 | public protocol IAxisValueFormatter: class
17 | {
18 |
19 | /// Called when a value from an axis is formatted before being drawn.
20 | ///
21 | /// For performance reasons, avoid excessive calculations and memory allocations inside this method.
22 | ///
23 | /// - Parameters:
24 | /// - value: the value that is currently being drawn
25 | /// - axis: the axis that the value belongs to
26 | /// - Returns: The customized label that is drawn on the x-axis.
27 | func stringForValue(_ value: Double,
28 | axis: AxisBase?) -> String
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/Source/Charts/Renderers/Scatter/IShapeRenderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IShapeRenderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol IShapeRenderer: class
17 | {
18 | /// Renders the provided ScatterDataSet with a shape.
19 | ///
20 | /// - Parameters:
21 | /// - context: CGContext for drawing on
22 | /// - dataSet: The DataSet to be drawn
23 | /// - viewPortHandler: Contains information about the current state of the view
24 | /// - point: Position to draw the shape at
25 | /// - color: Color to draw the shape
26 | func renderShape(
27 | context: CGContext,
28 | dataSet: IScatterChartDataSet,
29 | viewPortHandler: ViewPortHandler,
30 | point: CGPoint,
31 | color: NSUIColor)
32 | }
33 |
--------------------------------------------------------------------------------
/Source/Charts/Components/ComponentBase.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ComponentBase.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 |
16 | /// This class encapsulates everything both Axis, Legend and LimitLines have in common
17 | @objc(ChartComponentBase)
18 | open class ComponentBase: NSObject
19 | {
20 | /// flag that indicates if this component is enabled or not
21 | @objc open var enabled = true
22 |
23 | /// The offset this component has on the x-axis
24 | /// **default**: 5.0
25 | @objc open var xOffset = CGFloat(5.0)
26 |
27 | /// The offset this component has on the x-axis
28 | /// **default**: 5.0 (or 0.0 on ChartYAxis)
29 | @objc open var yOffset = CGFloat(5.0)
30 |
31 | public override init()
32 | {
33 | super.init()
34 | }
35 |
36 | @objc open var isEnabled: Bool { return enabled }
37 | }
38 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Components/XYMarkerView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // XYMarkerView.swift
3 | // ChartsDemo
4 | // Copyright © 2016 dcg. All rights reserved.
5 | //
6 |
7 | import Foundation
8 | import Charts
9 |
10 | open class XYMarkerView: BalloonMarker
11 | {
12 | @objc open var xAxisValueFormatter: IAxisValueFormatter?
13 | fileprivate var yFormatter = NumberFormatter()
14 |
15 | @objc public init(color: UIColor, font: UIFont, textColor: UIColor, insets: UIEdgeInsets,
16 | xAxisValueFormatter: IAxisValueFormatter)
17 | {
18 | super.init(color: color, font: font, textColor: textColor, insets: insets)
19 | self.xAxisValueFormatter = xAxisValueFormatter
20 | yFormatter.minimumFractionDigits = 1
21 | yFormatter.maximumFractionDigits = 1
22 | }
23 |
24 | open override func refreshContent(entry: ChartDataEntry, highlight: Highlight)
25 | {
26 | setLabel("x: " + xAxisValueFormatter!.stringForValue(entry.x, axis: nil) + ", y: " + yFormatter.string(from: NSNumber(floatLiteral: entry.y))!)
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/ChartsDemo-macOS/ChartsDemo-macOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1
25 | LSMinimumSystemVersion
26 | $(MACOSX_DEPLOYMENT_TARGET)
27 | NSMainStoryboardFile
28 | Main
29 | NSPrincipalClass
30 | NSApplication
31 |
32 |
33 |
--------------------------------------------------------------------------------
/Source/Charts/Utils/TransformerHorizontalBarChart.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TransformerHorizontalBarChart.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(ChartTransformerHorizontalBarChart)
16 | open class TransformerHorizontalBarChart: Transformer
17 | {
18 | /// Prepares the matrix that contains all offsets.
19 | open override func prepareMatrixOffset(inverted: Bool)
20 | {
21 | if !inverted
22 | {
23 | _matrixOffset = CGAffineTransform(translationX: _viewPortHandler.offsetLeft, y: _viewPortHandler.chartHeight - _viewPortHandler.offsetBottom)
24 | }
25 | else
26 | {
27 | _matrixOffset = CGAffineTransform(scaleX: -1.0, y: 1.0)
28 | _matrixOffset = _matrixOffset.translatedBy(x: -(_viewPortHandler.chartWidth - _viewPortHandler.offsetRight),
29 | y: _viewPortHandler.chartHeight - _viewPortHandler.offsetBottom)
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Source/Charts/Interfaces/ChartDataProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChartDataProvider.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol ChartDataProvider
17 | {
18 | /// The minimum x-value of the chart, regardless of zoom or translation.
19 | var chartXMin: Double { get }
20 |
21 | /// The maximum x-value of the chart, regardless of zoom or translation.
22 | var chartXMax: Double { get }
23 |
24 | /// The minimum y-value of the chart, regardless of zoom or translation.
25 | var chartYMin: Double { get }
26 |
27 | /// The maximum y-value of the chart, regardless of zoom or translation.
28 | var chartYMax: Double { get }
29 |
30 | var maxHighlightDistance: CGFloat { get }
31 |
32 | var xRange: Double { get }
33 |
34 | var centerOffsets: CGPoint { get }
35 |
36 | var data: ChartData? { get }
37 |
38 | var maxVisibleCount: Int { get }
39 | }
40 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Swift/Components/XYMarkerView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // XYMarkerView.swift
3 | // ChartsDemo-iOS
4 | //
5 | // Created by Jacob Christie on 2017-07-09.
6 | // Copyright © 2017 jc. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import Charts
11 |
12 | public class XYMarkerView: BalloonMarker {
13 | public var xAxisValueFormatter: IAxisValueFormatter
14 | fileprivate var yFormatter = NumberFormatter()
15 |
16 | public init(color: UIColor, font: UIFont, textColor: UIColor, insets: UIEdgeInsets,
17 | xAxisValueFormatter: IAxisValueFormatter) {
18 | self.xAxisValueFormatter = xAxisValueFormatter
19 | yFormatter.minimumFractionDigits = 1
20 | yFormatter.maximumFractionDigits = 1
21 | super.init(color: color, font: font, textColor: textColor, insets: insets)
22 | }
23 |
24 | public override func refreshContent(entry: ChartDataEntry, highlight: Highlight) {
25 | let string = "x: "
26 | + xAxisValueFormatter.stringForValue(entry.x, axis: XAxis())
27 | + ", y: "
28 | + yFormatter.string(from: NSNumber(floatLiteral: entry.y))!
29 | setLabel(string)
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/ChartsDemo-macOS/ChartsDemo-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "mac",
5 | "size" : "16x16",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "mac",
10 | "size" : "16x16",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "mac",
15 | "size" : "32x32",
16 | "scale" : "1x"
17 | },
18 | {
19 | "idiom" : "mac",
20 | "size" : "32x32",
21 | "scale" : "2x"
22 | },
23 | {
24 | "idiom" : "mac",
25 | "size" : "128x128",
26 | "scale" : "1x"
27 | },
28 | {
29 | "idiom" : "mac",
30 | "size" : "128x128",
31 | "scale" : "2x"
32 | },
33 | {
34 | "idiom" : "mac",
35 | "size" : "256x256",
36 | "scale" : "1x"
37 | },
38 | {
39 | "idiom" : "mac",
40 | "size" : "256x256",
41 | "scale" : "2x"
42 | },
43 | {
44 | "idiom" : "mac",
45 | "size" : "512x512",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "mac",
50 | "size" : "512x512",
51 | "scale" : "2x"
52 | }
53 | ],
54 | "info" : {
55 | "version" : 1,
56 | "author" : "xcode"
57 | }
58 | }
--------------------------------------------------------------------------------
/Source/Charts/Data/Interfaces/IScatterChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IScatterChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol IScatterChartDataSet: ILineScatterCandleRadarChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | // MARK: - Styling functions and accessors
21 |
22 | /// The size the scatter shape will have
23 | var scatterShapeSize: CGFloat { get }
24 |
25 | /// - Returns: The radius of the hole in the shape (applies to Square, Circle and Triangle)
26 | /// Set this to <= 0 to remove holes.
27 | /// **default**: 0.0
28 | var scatterShapeHoleRadius: CGFloat { get }
29 |
30 | /// - Returns: Color for the hole in the shape. Setting to `nil` will behave as transparent.
31 | /// **default**: nil
32 | var scatterShapeHoleColor: NSUIColor? { get }
33 |
34 | /// The IShapeRenderer responsible for rendering this DataSet.
35 | var shapeRenderer: IShapeRenderer? { get }
36 | }
37 |
--------------------------------------------------------------------------------
/Source/Charts/Renderers/Scatter/CrossShapeRenderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CrossShapeRenderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 | import Foundation
12 | import CoreGraphics
13 |
14 | open class CrossShapeRenderer : NSObject, IShapeRenderer
15 | {
16 | open func renderShape(
17 | context: CGContext,
18 | dataSet: IScatterChartDataSet,
19 | viewPortHandler: ViewPortHandler,
20 | point: CGPoint,
21 | color: NSUIColor)
22 | {
23 | let shapeSize = dataSet.scatterShapeSize
24 | let shapeHalf = shapeSize / 2.0
25 |
26 | context.setLineWidth(1.0)
27 | context.setStrokeColor(color.cgColor)
28 |
29 | context.beginPath()
30 | context.move(to: CGPoint(x: point.x - shapeHalf, y: point.y))
31 | context.addLine(to: CGPoint(x: point.x + shapeHalf, y: point.y))
32 | context.move(to: CGPoint(x: point.x, y: point.y - shapeHalf))
33 | context.addLine(to: CGPoint(x: point.x, y: point.y + shapeHalf))
34 | context.strokePath()
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Source/Charts/Renderers/Scatter/XShapeRenderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // XShapeRenderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 | import Foundation
12 | import CoreGraphics
13 |
14 | open class XShapeRenderer : NSObject, IShapeRenderer
15 | {
16 | open func renderShape(
17 | context: CGContext,
18 | dataSet: IScatterChartDataSet,
19 | viewPortHandler: ViewPortHandler,
20 | point: CGPoint,
21 | color: NSUIColor)
22 | {
23 | let shapeSize = dataSet.scatterShapeSize
24 | let shapeHalf = shapeSize / 2.0
25 |
26 | context.setLineWidth(1.0)
27 | context.setStrokeColor(color.cgColor)
28 |
29 | context.beginPath()
30 | context.move(to: CGPoint(x: point.x - shapeHalf, y: point.y - shapeHalf))
31 | context.addLine(to: CGPoint(x: point.x + shapeHalf, y: point.y + shapeHalf))
32 | context.move(to: CGPoint(x: point.x + shapeHalf, y: point.y - shapeHalf))
33 | context.addLine(to: CGPoint(x: point.x - shapeHalf, y: point.y + shapeHalf))
34 | context.strokePath()
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Source/Charts/Highlight/Range.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Range.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | @objc(ChartRange)
15 | open class Range: NSObject
16 | {
17 | @objc open var from: Double
18 | @objc open var to: Double
19 |
20 | @objc public init(from: Double, to: Double)
21 | {
22 | self.from = from
23 | self.to = to
24 |
25 | super.init()
26 | }
27 |
28 | /// - Parameters:
29 | /// - value:
30 | /// - Returns: `true` if this range contains (if the value is in between) the given value, `false` ifnot.
31 | @objc open func contains(_ value: Double) -> Bool
32 | {
33 | if value > from && value <= to
34 | {
35 | return true
36 | }
37 | else
38 | {
39 | return false
40 | }
41 | }
42 |
43 | @objc open func isLarger(_ value: Double) -> Bool
44 | {
45 | return value > to
46 | }
47 |
48 | @objc open func isSmaller(_ value: Double) -> Bool
49 | {
50 | return value < from
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: objective-c
2 | osx_image: xcode10
3 | matrix:
4 | include:
5 | - osx_image: xcode10
6 | env: PLATFORM="iOS"
7 | - osx_image: xcode10
8 | env: PLATFORM="tvOS"
9 | - osx_image: xcode10
10 | env: PLATFORM="macOS"
11 | env:
12 | global:
13 | - LANG=en_US.UTF-8
14 | - secure: HRl5Cg3/LmTJYCSDGtV8Fiqf6OgWXR6C5YkNviOElU9YmcCTvnmE7MCm+gK8hJNIQ2mWCBTlxTC7jJxeYlx0D+JQ6IhRc75B4zXgbtth6HCzlvhWDcBbNU/K+JPDjy2EAoVgvf8Xseq6GqM4WcVg2Pwr9PS3aaH/SKDE6yVoPXRM2wXRAxIdxayqm/RQgG88jAKgg+Ub5DKW/c9NLLbUf/WdY9SgQDJtqeZCMv7G3/IzW34KZgVPsqSrPByzZXbf7KgYkYLQlscH4mcUctk1qxhdCae//zcgUZo/utpXWbPXQqtvDpuqrg9IRvoGxa/D1I7dLSJsVnk4aP7RW18vn4HJ82C2AiEp+lU2TQE9y5lXcGssZVIa5aZNTWL90HVer3Kg6AnHffvdCSZ/UHsMZJFURUXL9fRIlWVGuEDeQOqlV6lUmEtp/BiEdV4D5PuCyT6snsmEwkc51goyqh6uS6XhJyqYEQdxdoybznwp91tVmASsRybppIGHTkcWN5csF4zQt40tEwd8LoqM+bBUo0wxKiKsNsecL4JA+YDYs2saZY9U3s8jAaIon+qDu071fPRaPEvBhYHYDhy4cTvBXibyGUYGHkrgLu0w19wDfHcJKt2In58yOmaCCLNoTGp/ZLNVRyZ8VDlj/NdJ2dWpMsL2Aj7OxU065kCL2FlvuRU=
15 | cache:
16 | - bundler
17 | before_install:
18 | - brew update
19 | - brew upgrade carthage || true
20 | - carthage version
21 | - carthage bootstrap --platform $PLATFORM
22 | script:
23 | - bundle exec rake ci[$PLATFORM]
24 | after_success:
25 | - bash <(curl -s https://codecov.io/bash)
26 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Interfaces/IRadarChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IRadarChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol IRadarChartDataSet: ILineRadarChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | // MARK: - Styling functions and accessors
21 |
22 | /// flag indicating whether highlight circle should be drawn or not
23 | var drawHighlightCircleEnabled: Bool { get set }
24 |
25 | var isDrawHighlightCircleEnabled: Bool { get }
26 |
27 | var highlightCircleFillColor: NSUIColor? { get set }
28 |
29 | /// The stroke color for highlight circle.
30 | /// If `nil`, the color of the dataset is taken.
31 | var highlightCircleStrokeColor: NSUIColor? { get set }
32 |
33 | var highlightCircleStrokeAlpha: CGFloat { get set }
34 |
35 | var highlightCircleInnerRadius: CGFloat { get set }
36 |
37 | var highlightCircleOuterRadius: CGFloat { get set }
38 |
39 | var highlightCircleStrokeWidth: CGFloat { get set }
40 | }
41 |
--------------------------------------------------------------------------------
/Source/Charts/Renderers/Scatter/ChevronUpShapeRenderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChevronUpShapeRenderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 | import Foundation
12 | import CoreGraphics
13 |
14 | open class ChevronUpShapeRenderer : NSObject, IShapeRenderer
15 | {
16 | open func renderShape(
17 | context: CGContext,
18 | dataSet: IScatterChartDataSet,
19 | viewPortHandler: ViewPortHandler,
20 | point: CGPoint,
21 | color: NSUIColor)
22 | {
23 | let shapeSize = dataSet.scatterShapeSize
24 | let shapeHalf = shapeSize / 2.0
25 |
26 | context.setLineWidth(1.0)
27 | context.setStrokeColor(color.cgColor)
28 |
29 | context.beginPath()
30 | context.move(to: CGPoint(x: point.x, y: point.y - 2 * shapeHalf))
31 | context.addLine(to: CGPoint(x: point.x + 2 * shapeHalf, y: point.y))
32 | context.move(to: CGPoint(x: point.x, y: point.y - 2 * shapeHalf))
33 | context.addLine(to: CGPoint(x: point.x - 2 * shapeHalf, y: point.y))
34 | context.strokePath()
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Source/Charts/Renderers/Scatter/ChevronDownShapeRenderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChevronDownShapeRenderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 | import Foundation
12 | import CoreGraphics
13 |
14 | open class ChevronDownShapeRenderer : NSObject, IShapeRenderer
15 | {
16 | open func renderShape(
17 | context: CGContext,
18 | dataSet: IScatterChartDataSet,
19 | viewPortHandler: ViewPortHandler,
20 | point: CGPoint,
21 | color: NSUIColor)
22 | {
23 | let shapeSize = dataSet.scatterShapeSize
24 | let shapeHalf = shapeSize / 2.0
25 |
26 | context.setLineWidth(1.0)
27 | context.setStrokeColor(color.cgColor)
28 |
29 | context.beginPath()
30 | context.move(to: CGPoint(x: point.x, y: point.y + 2 * shapeHalf))
31 | context.addLine(to: CGPoint(x: point.x + 2 * shapeHalf, y: point.y))
32 | context.move(to: CGPoint(x: point.x, y: point.y + 2 * shapeHalf))
33 | context.addLine(to: CGPoint(x: point.x - 2 * shapeHalf, y: point.y))
34 | context.strokePath()
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | > ℹ Please fill out this template when filing an issue.
2 | > All lines beginning with an ℹ symbol instruct you with what info we expect. You can delete those lines once you've filled in the info.
3 | >
4 | > Per our [*CONTRIBUTING guidelines](https://github.com/jjatie/Charts/blob/master/CONTRIBUTING.md), we use GitHub for
5 | > bugs and feature requests, not general support. Other issues should be opened on Stack Overflow with the tag [`ios-charts`.](https://stackoverflow.com/questions/tagged/ios-charts)
6 | >
7 | > Please remove this line and everything above it before submitting.
8 |
9 | * [ ] I've read, understood, and done my best to follow the [*CONTRIBUTING guidelines](https://github.com/jjatie/Charts/blob/master/CONTRIBUTING.md).
10 |
11 | ## What did you do?
12 |
13 | ℹ Please replace this with what you did.
14 |
15 | ## What did you expect to happen?
16 |
17 | ℹ Please replace this with what you expected to happen.
18 |
19 | ## What happened instead?
20 |
21 | ℹ Please replace this with of what happened instead.
22 |
23 | ## Charts Environment
24 |
25 | **Charts version/Branch/Commit Number:**
26 | **Xcode version:**
27 | **Swift version:**
28 | **Platform(s) running Charts:**
29 | **macOS version running Xcode:**
30 |
31 | ## Demo Project
32 |
33 | ℹ Please link to or upload a project we can download that reproduces the issue.
34 |
--------------------------------------------------------------------------------
/Source/Charts/Jobs/ViewPortJob.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewPortJob.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | // This defines a viewport modification job, used for delaying or animating viewport changes
16 | @objc(ChartViewPortJob)
17 | open class ViewPortJob: NSObject
18 | {
19 | internal var point: CGPoint = CGPoint()
20 | internal weak var viewPortHandler: ViewPortHandler?
21 | internal var xValue: Double = 0.0
22 | internal var yValue: Double = 0.0
23 | internal weak var transformer: Transformer?
24 | internal weak var view: ChartViewBase?
25 |
26 | @objc public init(
27 | viewPortHandler: ViewPortHandler,
28 | xValue: Double,
29 | yValue: Double,
30 | transformer: Transformer,
31 | view: ChartViewBase)
32 | {
33 | super.init()
34 |
35 | self.viewPortHandler = viewPortHandler
36 | self.xValue = xValue
37 | self.yValue = yValue
38 | self.transformer = transformer
39 | self.view = view
40 | }
41 |
42 | @objc open func doJob()
43 | {
44 | fatalError("`doJob()` must be overridden by subclasses")
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BarLineScatterCandleBubbleChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 |
16 | open class BarLineScatterCandleBubbleChartDataSet: ChartDataSet, IBarLineScatterCandleBubbleChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | // MARK: - Styling functions and accessors
21 |
22 | open var highlightColor = NSUIColor(red: 255.0/255.0, green: 187.0/255.0, blue: 115.0/255.0, alpha: 1.0)
23 | open var highlightLineWidth = CGFloat(0.5)
24 | open var highlightLineDashPhase = CGFloat(0.0)
25 | open var highlightLineDashLengths: [CGFloat]?
26 |
27 | // MARK: - NSCopying
28 |
29 | open override func copy(with zone: NSZone? = nil) -> Any
30 | {
31 | let copy = super.copy(with: zone) as! BarLineScatterCandleBubbleChartDataSet
32 | copy.highlightColor = highlightColor
33 | copy.highlightLineWidth = highlightLineWidth
34 | copy.highlightLineDashPhase = highlightLineDashPhase
35 | copy.highlightLineDashLengths = highlightLineDashLengths
36 | return copy
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Implementations/Standard/RadarChartDataEntry.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RadarChartDataEntry.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | open class RadarChartDataEntry: ChartDataEntry
16 | {
17 | public required init()
18 | {
19 | super.init()
20 | }
21 |
22 | /// - Parameters:
23 | /// - value: The value on the y-axis.
24 | /// - data: Spot for additional data this Entry represents.
25 | @objc public init(value: Double, data: AnyObject?)
26 | {
27 | super.init(x: 0.0, y: value, data: data)
28 | }
29 |
30 | /// - Parameters:
31 | /// - value: The value on the y-axis.
32 | @objc public convenience init(value: Double)
33 | {
34 | self.init(value: value, data: nil)
35 | }
36 |
37 | // MARK: Data property accessors
38 |
39 | @objc open var value: Double
40 | {
41 | get { return y }
42 | set { y = value }
43 | }
44 |
45 | // MARK: NSCopying
46 |
47 | open override func copy(with zone: NSZone? = nil) -> Any
48 | {
49 | let copy = super.copy(with: zone) as! RadarChartDataEntry
50 |
51 | return copy
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Resources/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "size" : "29x29",
15 | "idiom" : "iphone",
16 | "filename" : "Icon-29@2x.png",
17 | "scale" : "2x"
18 | },
19 | {
20 | "size" : "29x29",
21 | "idiom" : "iphone",
22 | "filename" : "Icon-29@3x.png",
23 | "scale" : "3x"
24 | },
25 | {
26 | "size" : "40x40",
27 | "idiom" : "iphone",
28 | "filename" : "Icon-40@2x.png",
29 | "scale" : "2x"
30 | },
31 | {
32 | "size" : "40x40",
33 | "idiom" : "iphone",
34 | "filename" : "Icon-40@3x.png",
35 | "scale" : "3x"
36 | },
37 | {
38 | "size" : "60x60",
39 | "idiom" : "iphone",
40 | "filename" : "Icon-60@2x.png",
41 | "scale" : "2x"
42 | },
43 | {
44 | "size" : "60x60",
45 | "idiom" : "iphone",
46 | "filename" : "Icon-60@3x.png",
47 | "scale" : "3x"
48 | },
49 | {
50 | "size" : "1024x1024",
51 | "idiom" : "ios-marketing",
52 | "filename" : "iTunesArtwork@2x.png",
53 | "scale" : "1x"
54 | }
55 | ],
56 | "info" : {
57 | "version" : 1,
58 | "author" : "xcode"
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/Source/Charts/Components/Description.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Description.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(ChartDescription)
16 | open class Description: ComponentBase
17 | {
18 | public override init()
19 | {
20 | #if os(tvOS)
21 | // 23 is the smallest recommended font size on the TV
22 | font = .systemFont(ofSize: 23)
23 | #elseif os(OSX)
24 | font = .systemFont(ofSize: NSUIFont.systemFontSize)
25 | #else
26 | font = .systemFont(ofSize: 8.0)
27 | #endif
28 |
29 | super.init()
30 | }
31 |
32 | /// The text to be shown as the description.
33 | @objc open var text: String?
34 |
35 | /// Custom position for the description text in pixels on the screen.
36 | open var position: CGPoint? = nil
37 |
38 | /// The text alignment of the description text. Default RIGHT.
39 | @objc open var textAlign: NSTextAlignment = NSTextAlignment.right
40 |
41 | /// Font object used for drawing the description text.
42 | @objc open var font: NSUIFont
43 |
44 | /// Text color used for drawing the description text
45 | @objc open var textColor = NSUIColor.black
46 | }
47 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Interfaces/ILineScatterCandleRadarChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ILineScatterCandleRadarChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | @objc
15 | public protocol ILineScatterCandleRadarChartDataSet: IBarLineScatterCandleBubbleChartDataSet
16 | {
17 | // MARK: - Data functions and accessors
18 |
19 | // MARK: - Styling functions and accessors
20 |
21 | /// Enables / disables the horizontal highlight-indicator. If disabled, the indicator is not drawn.
22 | var drawHorizontalHighlightIndicatorEnabled: Bool { get set }
23 |
24 | /// Enables / disables the vertical highlight-indicator. If disabled, the indicator is not drawn.
25 | var drawVerticalHighlightIndicatorEnabled: Bool { get set }
26 |
27 | /// `true` if horizontal highlight indicator lines are enabled (drawn)
28 | var isHorizontalHighlightIndicatorEnabled: Bool { get }
29 |
30 | /// `true` if vertical highlight indicator lines are enabled (drawn)
31 | var isVerticalHighlightIndicatorEnabled: Bool { get }
32 |
33 | /// Enables / disables both vertical and horizontal highlight-indicators.
34 | /// :param: enabled
35 | func setDrawHighlightIndicators(_ enabled: Bool)
36 | }
37 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Implementations/Standard/RadarChartData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RadarChartData.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 |
16 | open class RadarChartData: ChartData
17 | {
18 | @objc open var highlightColor = NSUIColor(red: 255.0/255.0, green: 187.0/255.0, blue: 115.0/255.0, alpha: 1.0)
19 | @objc open var highlightLineWidth = CGFloat(1.0)
20 | @objc open var highlightLineDashPhase = CGFloat(0.0)
21 | @objc open var highlightLineDashLengths: [CGFloat]?
22 |
23 | /// Sets labels that should be drawn around the RadarChart at the end of each web line.
24 | @objc open var labels = [String]()
25 |
26 | /// Sets the labels that should be drawn around the RadarChart at the end of each web line.
27 | open func setLabels(_ labels: String...)
28 | {
29 | self.labels = labels
30 | }
31 |
32 | public override init()
33 | {
34 | super.init()
35 | }
36 |
37 | public override init(dataSets: [IChartDataSet]?)
38 | {
39 | super.init(dataSets: dataSets)
40 | }
41 |
42 | open override func entryForHighlight(_ highlight: Highlight) -> ChartDataEntry?
43 | {
44 | return getDataSetByIndex(highlight.dataSetIndex)?.entryForIndex(Int(highlight.x))
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/Source/Charts/Formatters/IValueFormatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IValueFormatter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | /// Interface that allows custom formatting of all values inside the chart before they are drawn to the screen.
15 | ///
16 | /// Simply create your own formatting class and let it implement ValueFormatter. Then override the stringForValue()
17 | /// method and return whatever you want.
18 |
19 | @objc(IChartValueFormatter)
20 | public protocol IValueFormatter: class
21 | {
22 |
23 | /// Called when a value (from labels inside the chart) is formatted before being drawn.
24 | ///
25 | /// For performance reasons, avoid excessive calculations and memory allocations inside this method.
26 | ///
27 | /// - Parameters:
28 | /// - value: The value to be formatted
29 | /// - dataSetIndex: The index of the DataSet the entry in focus belongs to
30 | /// - viewPortHandler: provides information about the current chart state (scale, translation, ...)
31 | /// - Returns: The formatted label ready to be drawn
32 | func stringForValue(_ value: Double,
33 | entry: ChartDataEntry,
34 | dataSetIndex: Int,
35 | viewPortHandler: ViewPortHandler?) -> String
36 | }
37 |
--------------------------------------------------------------------------------
/Tests/Charts/EquatableTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // EquatableTests.swift
3 | // Charts
4 | //
5 | // Created by Jacob Christie on 2017-11-13.
6 | //
7 |
8 | import XCTest
9 | @testable import Charts
10 |
11 | class EquatableTests: XCTestCase {
12 | func testChartDataEntryEquality() {
13 | let image = UIImage()
14 | let data = NSObject()
15 | let entry1 = ChartDataEntry(x: 5, y: 3, icon: image, data: data)
16 | let entry2 = ChartDataEntry(x: 5, y: 3, icon: image, data: data)
17 |
18 | XCTAssertTrue(entry1 == entry2)
19 | }
20 |
21 | func testChartDataEntryInequality() {
22 | let image = UIImage()
23 | let data1 = NSObject()
24 | let data2 = NSObject()
25 | let entry1 = ChartDataEntry(x: 5, y: 3, icon: image, data: data1)
26 | let entry2 = ChartDataEntry(x: 5, y: 3, icon: image, data: data2)
27 |
28 | XCTAssertFalse(entry1 == entry2)
29 | }
30 |
31 | func testHighlightEquality() {
32 | let high1 = Highlight(x: 5, y: 3, xPx: 1, yPx: -1, dataSetIndex: 8, stackIndex: 8, axis: .right)
33 | let high2 = Highlight(x: 5, y: 3, xPx: 1, yPx: -1, dataSetIndex: 8, stackIndex: 8, axis: .right)
34 |
35 | XCTAssertTrue(high1 == high2)
36 | }
37 |
38 | func testHighlightInequality() {
39 | let high1 = Highlight(x: 5, y: 3, xPx: 1, yPx: -1, dataSetIndex: 8, stackIndex: 8, axis: .left)
40 | let high2 = Highlight(x: 5, y: 3, xPx: 1, yPx: -1, dataSetIndex: 8, stackIndex: 9, axis: .left)
41 |
42 | XCTAssertFalse(high1 == high2)
43 | }
44 | }
45 |
46 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Supporting Files/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | NSPhotoLibraryAddUsageDescription
26 | This app requires access to the photo library to store shots of charts there.
27 | NSPhotoLibraryUsageDescription
28 | This app requires access to the photo library to store shots of charts there.
29 | UILaunchStoryboardName
30 | Launch Screen
31 | UIRequiredDeviceCapabilities
32 |
33 | armv7
34 |
35 | UISupportedInterfaceOrientations
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationLandscapeLeft
39 | UIInterfaceOrientationLandscapeRight
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Interfaces/IBarChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IBarChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol IBarChartDataSet: IBarLineScatterCandleBubbleChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | // MARK: - Styling functions and accessors
21 |
22 | /// `true` if this DataSet is stacked (stacksize > 1) or not.
23 | var isStacked: Bool { get }
24 |
25 | /// The maximum number of bars that can be stacked upon another in this DataSet.
26 | var stackSize: Int { get }
27 |
28 | /// the color used for drawing the bar-shadows. The bar shadows is a surface behind the bar that indicates the maximum value
29 | var barShadowColor: NSUIColor { get set }
30 |
31 | /// the width used for drawing borders around the bars. If borderWidth == 0, no border will be drawn.
32 | var barBorderWidth : CGFloat { get set }
33 |
34 | /// the color drawing borders around the bars.
35 | var barBorderColor: NSUIColor { get set }
36 |
37 | /// the alpha value (transparency) that is used for drawing the highlight indicator bar. min = 0.0 (fully transparent), max = 1.0 (fully opaque)
38 | var highlightAlpha: CGFloat { get set }
39 |
40 | /// array of labels used to describe the different values of the stacked bars
41 | var stackLabels: [String] { get set }
42 | }
43 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Interfaces/ILineRadarChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ILineRadarChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol ILineRadarChartDataSet: ILineScatterCandleRadarChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | // MARK: - Styling functions and accessors
21 |
22 | /// The color that is used for filling the line surface area.
23 | var fillColor: NSUIColor { get set }
24 |
25 | /// - Returns: The object that is used for filling the area below the line.
26 | /// **default**: nil
27 | var fill: Fill? { get set }
28 |
29 | /// The alpha value that is used for filling the line surface.
30 | /// **default**: 0.33
31 | var fillAlpha: CGFloat { get set }
32 |
33 | /// line width of the chart (min = 0.0, max = 10)
34 | ///
35 | /// **default**: 1
36 | var lineWidth: CGFloat { get set }
37 |
38 | /// Set to `true` if the DataSet should be drawn filled (surface), and not just as a line.
39 | /// Disabling this will give great performance boost.
40 | /// Please note that this method uses the path clipping for drawing the filled area (with images, gradients and layers).
41 | var drawFilledEnabled: Bool { get set }
42 |
43 | /// `true` if filled drawing is enabled, `false` if not
44 | var isDrawFilledEnabled: Bool { get }
45 | }
46 |
--------------------------------------------------------------------------------
/Source/Charts/Formatters/IndexAxisValueFormatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IndexAxisValueFormatter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 | /// This formatter is used for passing an array of x-axis labels, on whole x steps.
15 | @objc(ChartIndexAxisValueFormatter)
16 | open class IndexAxisValueFormatter: NSObject, IAxisValueFormatter
17 | {
18 | private var _values: [String] = [String]()
19 | private var _valueCount: Int = 0
20 |
21 | @objc public var values: [String]
22 | {
23 | get
24 | {
25 | return _values
26 | }
27 | set
28 | {
29 | _values = newValue
30 | _valueCount = _values.count
31 | }
32 | }
33 |
34 | public override init()
35 | {
36 | super.init()
37 |
38 | }
39 |
40 | @objc public init(values: [String])
41 | {
42 | super.init()
43 |
44 | self.values = values
45 | }
46 |
47 | @objc public static func with(values: [String]) -> IndexAxisValueFormatter?
48 | {
49 | return IndexAxisValueFormatter(values: values)
50 | }
51 |
52 | open func stringForValue(_ value: Double,
53 | axis: AxisBase?) -> String
54 | {
55 | let index = Int(value.rounded())
56 | guard values.indices.contains(index), index == Int(value) else { return "" }
57 | return _values[index]
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/ChartsDemo-macOS/ChartsDemo-macOS/Demos/RadarDemoViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RadarDemoViewController.swift
3 | // ChartsDemo-OSX
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/ios-charts
10 |
11 | import Foundation
12 | import Cocoa
13 | import Charts
14 |
15 | open class RadarDemoViewController: NSViewController
16 | {
17 | @IBOutlet var radarChartView: RadarChartView!
18 |
19 | override open func viewDidLoad()
20 | {
21 | super.viewDidLoad()
22 |
23 | // Do any additional setup after loading the view.
24 | let ys1 = Array(1..<10).map { x in return sin(Double(x) / 2.0 / 3.141 * 1.5) }
25 | let ys2 = Array(1..<10).map { x in return cos(Double(x) / 2.0 / 3.141) }
26 |
27 | let yse1 = ys1.enumerated().map { x, y in return RadarChartDataEntry(value: y) }
28 | let yse2 = ys2.enumerated().map { x, y in return RadarChartDataEntry(value: y) }
29 |
30 | let data = RadarChartData()
31 | let ds1 = RadarChartDataSet(entries: yse1, label: "Hello")
32 | ds1.colors = [NSUIColor.red]
33 | data.addDataSet(ds1)
34 |
35 | let ds2 = RadarChartDataSet(entries: yse2, label: "World")
36 | ds2.colors = [NSUIColor.blue]
37 | data.addDataSet(ds2)
38 | self.radarChartView.data = data
39 | self.radarChartView.chartDescription?.text = "Radarchart Demo"
40 |
41 | }
42 |
43 | override open func viewWillAppear()
44 | {
45 | self.radarChartView.animate(xAxisDuration: 0.0, yAxisDuration: 1.0)
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Swift/Formatters/LargeValueFormatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LargeValueFormatter.swift
3 | // ChartsDemo
4 | // Copyright © 2016 dcg. All rights reserved.
5 | //
6 |
7 | import Foundation
8 | import Charts
9 |
10 | private let MAX_LENGTH = 5
11 |
12 | @objc protocol Testing123 { }
13 |
14 | public class LargeValueFormatter: NSObject, IValueFormatter, IAxisValueFormatter {
15 |
16 | /// Suffix to be appended after the values.
17 | ///
18 | /// **default**: suffix: ["", "k", "m", "b", "t"]
19 | public var suffix = ["", "k", "m", "b", "t"]
20 |
21 | /// An appendix text to be added at the end of the formatted value.
22 | public var appendix: String?
23 |
24 | public init(appendix: String? = nil) {
25 | self.appendix = appendix
26 | }
27 |
28 | fileprivate func format(value: Double) -> String {
29 | var sig = value
30 | var length = 0
31 | let maxLength = suffix.count - 1
32 |
33 | while sig >= 1000.0 && length < maxLength {
34 | sig /= 1000.0
35 | length += 1
36 | }
37 |
38 | var r = String(format: "%2.f", sig) + suffix[length]
39 |
40 | if let appendix = appendix {
41 | r += appendix
42 | }
43 |
44 | return r
45 | }
46 |
47 | public func stringForValue(_ value: Double, axis: AxisBase?) -> String {
48 | return format(value: value)
49 | }
50 |
51 | public func stringForValue(
52 | _ value: Double,
53 | entry: ChartDataEntry,
54 | dataSetIndex: Int,
55 | viewPortHandler: ViewPortHandler?) -> String {
56 | return format(value: value)
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/ChartsDemo-macOS/ChartsDemo-macOS/Demos/LineDemoViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LineDemoViewController.swift
3 | // ChartsDemo-OSX
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/ios-charts
10 |
11 | import Foundation
12 | import Cocoa
13 | import Charts
14 |
15 | open class LineDemoViewController: NSViewController
16 | {
17 | @IBOutlet var lineChartView: LineChartView!
18 |
19 | override open func viewDidLoad()
20 | {
21 | super.viewDidLoad()
22 |
23 | // Do any additional setup after loading the view.
24 | let ys1 = Array(1..<10).map { x in return sin(Double(x) / 2.0 / 3.141 * 1.5) }
25 | let ys2 = Array(1..<10).map { x in return cos(Double(x) / 2.0 / 3.141) }
26 |
27 | let yse1 = ys1.enumerated().map { x, y in return ChartDataEntry(x: Double(x), y: y) }
28 | let yse2 = ys2.enumerated().map { x, y in return ChartDataEntry(x: Double(x), y: y) }
29 |
30 | let data = LineChartData()
31 | let ds1 = LineChartDataSet(entries: yse1, label: "Hello")
32 | ds1.colors = [NSUIColor.red]
33 | data.addDataSet(ds1)
34 |
35 | let ds2 = LineChartDataSet(entries: yse2, label: "World")
36 | ds2.colors = [NSUIColor.blue]
37 | data.addDataSet(ds2)
38 | self.lineChartView.data = data
39 |
40 | self.lineChartView.gridBackgroundColor = NSUIColor.white
41 |
42 | self.lineChartView.chartDescription?.text = "Linechart Demo"
43 | }
44 |
45 | override open func viewWillAppear()
46 | {
47 | self.lineChartView.animate(xAxisDuration: 0.0, yAxisDuration: 1.0)
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/Source/Charts/Formatters/DefaultFillFormatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DefaultFillFormatter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | /// Default formatter that calculates the position of the filled line.
16 | @objc(ChartDefaultFillFormatter)
17 | open class DefaultFillFormatter: NSObject, IFillFormatter
18 | {
19 | public typealias Block = (
20 | _ dataSet: ILineChartDataSet,
21 | _ dataProvider: LineChartDataProvider) -> CGFloat
22 |
23 | @objc open var block: Block?
24 |
25 | public override init() { }
26 |
27 | @objc public init(block: @escaping Block)
28 | {
29 | self.block = block
30 | }
31 |
32 | @objc public static func with(block: @escaping Block) -> DefaultFillFormatter?
33 | {
34 | return DefaultFillFormatter(block: block)
35 | }
36 |
37 | open func getFillLinePosition(
38 | dataSet: ILineChartDataSet,
39 | dataProvider: LineChartDataProvider) -> CGFloat
40 | {
41 | guard block == nil else { return block!(dataSet, dataProvider) }
42 | var fillMin: CGFloat = 0.0
43 |
44 | if dataSet.yMax > 0.0 && dataSet.yMin < 0.0
45 | {
46 | fillMin = 0.0
47 | }
48 | else if let data = dataProvider.data
49 | {
50 | let max = data.yMax > 0.0 ? 0.0 : dataProvider.chartYMax
51 | let min = data.yMin < 0.0 ? 0.0 : dataProvider.chartYMin
52 |
53 | fillMin = CGFloat(dataSet.yMin >= 0.0 ? min : max)
54 | }
55 |
56 | return fillMin
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/Source/Charts/Renderers/LineRadarRenderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LineRadarRenderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(LineRadarChartRenderer)
16 | open class LineRadarRenderer: LineScatterCandleRadarRenderer
17 | {
18 | public override init(animator: Animator, viewPortHandler: ViewPortHandler)
19 | {
20 | super.init(animator: animator, viewPortHandler: viewPortHandler)
21 | }
22 |
23 | /// Draws the provided path in filled mode with the provided drawable.
24 | @objc open func drawFilledPath(context: CGContext, path: CGPath, fill: Fill, fillAlpha: CGFloat)
25 | {
26 |
27 | context.saveGState()
28 | context.beginPath()
29 | context.addPath(path)
30 |
31 | // filled is usually drawn with less alpha
32 | context.setAlpha(fillAlpha)
33 |
34 | fill.fillPath(context: context, rect: viewPortHandler.contentRect)
35 |
36 | context.restoreGState()
37 | }
38 |
39 | /// Draws the provided path in filled mode with the provided color and alpha.
40 | @objc open func drawFilledPath(context: CGContext, path: CGPath, fillColor: NSUIColor, fillAlpha: CGFloat)
41 | {
42 | context.saveGState()
43 | context.beginPath()
44 | context.addPath(path)
45 |
46 | // filled is usually drawn with less alpha
47 | context.setAlpha(fillAlpha)
48 |
49 | context.setFillColor(fillColor.cgColor)
50 | context.fillPath()
51 |
52 | context.restoreGState()
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Implementations/Standard/BubbleChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BubbleChartDataSet.swift
3 | // Charts
4 | //
5 | // Bubble chart implementation:
6 | // Copyright 2015 Pierre-Marc Airoldi
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 |
16 | open class BubbleChartDataSet: BarLineScatterCandleBubbleChartDataSet, IBubbleChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | internal var _maxSize = CGFloat(0.0)
21 |
22 | open var maxSize: CGFloat { return _maxSize }
23 | @objc open var normalizeSizeEnabled: Bool = true
24 | open var isNormalizeSizeEnabled: Bool { return normalizeSizeEnabled }
25 |
26 | open override func calcMinMax(entry e: ChartDataEntry)
27 | {
28 | guard let e = e as? BubbleChartDataEntry
29 | else { return }
30 |
31 | super.calcMinMax(entry: e)
32 |
33 | let size = e.size
34 |
35 | if size > _maxSize
36 | {
37 | _maxSize = size
38 | }
39 | }
40 |
41 | // MARK: - Styling functions and accessors
42 |
43 | /// Sets/gets the width of the circle that surrounds the bubble when highlighted
44 | open var highlightCircleWidth: CGFloat = 2.5
45 |
46 | // MARK: - NSCopying
47 |
48 | open override func copy(with zone: NSZone? = nil) -> Any
49 | {
50 | let copy = super.copy(with: zone) as! BubbleChartDataSet
51 | copy._xMin = _xMin
52 | copy._xMax = _xMax
53 | copy._maxSize = _maxSize
54 | copy.normalizeSizeEnabled = normalizeSizeEnabled
55 | copy.highlightCircleWidth = highlightCircleWidth
56 | return copy
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/Source/Charts/Renderers/LineScatterCandleRadarRenderer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LineScatterCandleRadarRenderer.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(LineScatterCandleRadarChartRenderer)
16 | open class LineScatterCandleRadarRenderer: BarLineScatterCandleBubbleRenderer
17 | {
18 | public override init(animator: Animator, viewPortHandler: ViewPortHandler)
19 | {
20 | super.init(animator: animator, viewPortHandler: viewPortHandler)
21 | }
22 |
23 | /// Draws vertical & horizontal highlight-lines if enabled.
24 | /// :param: context
25 | /// :param: points
26 | /// :param: horizontal
27 | /// :param: vertical
28 | @objc open func drawHighlightLines(context: CGContext, point: CGPoint, set: ILineScatterCandleRadarChartDataSet)
29 | {
30 |
31 | // draw vertical highlight lines
32 | if set.isVerticalHighlightIndicatorEnabled
33 | {
34 | context.beginPath()
35 | context.move(to: CGPoint(x: point.x, y: viewPortHandler.contentTop))
36 | context.addLine(to: CGPoint(x: point.x, y: viewPortHandler.contentBottom))
37 | context.strokePath()
38 | }
39 |
40 | // draw horizontal highlight lines
41 | if set.isHorizontalHighlightIndicatorEnabled
42 | {
43 | context.beginPath()
44 | context.move(to: CGPoint(x: viewPortHandler.contentLeft, y: point.y))
45 | context.addLine(to: CGPoint(x: viewPortHandler.contentRight, y: point.y))
46 | context.strokePath()
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/ChartsDemo-iOS/Objective-C/Formatters/LargeValueFormatter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LargeValueFormatter.swift
3 | // ChartsDemo
4 | // Copyright © 2016 dcg. All rights reserved.
5 | //
6 |
7 | import Foundation
8 | import Charts
9 |
10 | open class LargeValueFormatter: NSObject, IValueFormatter, IAxisValueFormatter
11 | {
12 | fileprivate static let MAX_LENGTH = 5
13 |
14 | /// Suffix to be appended after the values.
15 | ///
16 | /// **default**: suffix: ["", "k", "m", "b", "t"]
17 | @objc open var suffix = ["", "k", "m", "b", "t"]
18 |
19 | /// An appendix text to be added at the end of the formatted value.
20 | @objc open var appendix: String?
21 |
22 | public override init()
23 | {
24 |
25 | }
26 |
27 | @objc public init(appendix: String?)
28 | {
29 | self.appendix = appendix
30 | }
31 |
32 | fileprivate func format(value: Double) -> String
33 | {
34 | var sig = value
35 | var length = 0
36 | let maxLength = suffix.count - 1
37 |
38 | while sig >= 1000.0 && length < maxLength
39 | {
40 | sig /= 1000.0
41 | length += 1
42 | }
43 |
44 | var r = String(format: "%2.f", sig) + suffix[length]
45 |
46 | if appendix != nil
47 | {
48 | r += appendix!
49 | }
50 |
51 | return r
52 | }
53 |
54 | open func stringForValue(
55 | _ value: Double, axis: AxisBase?) -> String
56 | {
57 | return format(value: value)
58 | }
59 |
60 | open func stringForValue(
61 | _ value: Double,
62 | entry: ChartDataEntry,
63 | dataSetIndex: Int,
64 | viewPortHandler: ViewPortHandler?) -> String
65 | {
66 | return format(value: value)
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # OS X
2 | .DS_Store
3 |
4 | # Xcode
5 | #
6 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
7 |
8 | ## Build generated
9 | build/
10 | DerivedData/
11 |
12 | ## Various settings
13 | *.pbxuser
14 | !default.pbxuser
15 | *.mode1v3
16 | !default.mode1v3
17 | *.mode2v3
18 | !default.mode2v3
19 | *.perspectivev3
20 | !default.perspectivev3
21 | xcuserdata/
22 |
23 | ## Other
24 | *.xccheckout
25 | *.moved-aside
26 | *.xcuserstate
27 |
28 | ## Obj-C/Swift specific
29 | DerivedData
30 | *.hmap
31 | *.ipa
32 | *.dSYM.zip
33 | *.dSYM
34 |
35 | ## Playgrounds
36 | timeline.xctimeline
37 | playground.xcworkspace
38 |
39 | # Swift Package Manager
40 | #
41 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
42 | # Packages/
43 | .build/
44 | project.xcworkspace
45 |
46 | # CocoaPods
47 | #
48 | # We recommend against adding the Pods directory to your .gitignore. However
49 | # you should judge for yourself, the pros and cons are mentioned at:
50 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
51 | #
52 | # Pods/
53 |
54 | # Carthage
55 | #
56 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
57 | # Carthage/Checkouts
58 |
59 | Carthage/Build
60 |
61 | # fastlane
62 | #
63 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
64 | # screenshots whenever they are needed.
65 | # For more information about the recommended setup visit:
66 | # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md
67 |
68 | fastlane/report.xml
69 | fastlane/Preview.html
70 | fastlane/screenshots
71 | fastlane/test_output
72 | Carthage
73 | Charts.framework.zip
74 | ChartsRealm.framework.zip
75 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Implementations/Standard/RadarChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RadarChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 |
16 | open class RadarChartDataSet: LineRadarChartDataSet, IRadarChartDataSet
17 | {
18 | private func initialize()
19 | {
20 | self.valueFont = NSUIFont.systemFont(ofSize: 13.0)
21 | }
22 |
23 | public required init()
24 | {
25 | super.init()
26 | initialize()
27 | }
28 |
29 | public required override init(entries: [ChartDataEntry]?, label: String?)
30 | {
31 | super.init(entries: entries, label: label)
32 | initialize()
33 | }
34 |
35 | // MARK: - Data functions and accessors
36 |
37 | // MARK: - Styling functions and accessors
38 |
39 | /// flag indicating whether highlight circle should be drawn or not
40 | /// **default**: false
41 | open var drawHighlightCircleEnabled: Bool = false
42 |
43 | /// `true` if highlight circle should be drawn, `false` ifnot
44 | open var isDrawHighlightCircleEnabled: Bool { return drawHighlightCircleEnabled }
45 |
46 | open var highlightCircleFillColor: NSUIColor? = NSUIColor.white
47 |
48 | /// The stroke color for highlight circle.
49 | /// If `nil`, the color of the dataset is taken.
50 | open var highlightCircleStrokeColor: NSUIColor?
51 |
52 | open var highlightCircleStrokeAlpha: CGFloat = 0.3
53 |
54 | open var highlightCircleInnerRadius: CGFloat = 3.0
55 |
56 | open var highlightCircleOuterRadius: CGFloat = 4.0
57 |
58 | open var highlightCircleStrokeWidth: CGFloat = 2.0
59 | }
60 |
--------------------------------------------------------------------------------
/Source/Charts/Components/IMarker.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChartMarker.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(IChartMarker)
16 | public protocol IMarker: class
17 | {
18 | /// - Returns: The desired (general) offset you wish the IMarker to have on the x-axis.
19 | /// By returning x: -(width / 2) you will center the IMarker horizontally.
20 | /// By returning y: -(height / 2) you will center the IMarker vertically.
21 | var offset: CGPoint { get }
22 |
23 | /// - Parameters:
24 | /// - point: This is the point at which the marker wants to be drawn. You can adjust the offset conditionally based on this argument.
25 | /// - Returns: The offset for drawing at the specific `point`.
26 | /// This allows conditional adjusting of the Marker position.
27 | /// If you have no adjustments to make, return self.offset().
28 | func offsetForDrawing(atPoint: CGPoint) -> CGPoint
29 |
30 | /// This method enables a custom IMarker to update it's content every time the IMarker is redrawn according to the data entry it points to.
31 | ///
32 | /// - Parameters:
33 | /// - entry: The Entry the IMarker belongs to. This can also be any subclass of Entry, like BarEntry or CandleEntry, simply cast it at runtime.
34 | /// - highlight: The highlight object contains information about the highlighted value such as it's dataset-index, the selected range or stack-index (only stacked bar entries).
35 | func refreshContent(entry: ChartDataEntry, highlight: Highlight)
36 |
37 | /// Draws the IMarker on the given position on the given context
38 | func draw(context: CGContext, point: CGPoint)
39 | }
40 |
--------------------------------------------------------------------------------
/ChartsDemo-macOS/PlaygroundChart.playground/Pages/BarChart.xcplaygroundpage/Contents.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PlayGround
3 | //
4 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
5 | // Copyright © 2017 thierry Hentic.
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/ios-charts
10 |
11 | /*:
12 | ****
13 | [Menu](Menu)
14 |
15 | [Previous](@previous) | [Next](@next)
16 | ****
17 | */
18 |
19 | //: # Bar Chart
20 | //#-hidden-code
21 | import Cocoa
22 | import Charts
23 | import PlaygroundSupport
24 | //#-end-hidden-code
25 |
26 |
27 | let months = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
28 | let values : [Double] = [28800, 32400, 36000, 34000, 30000, 42000, 45000]
29 |
30 | let r = CGRect(x: 0, y: 0, width: 600, height: 600)
31 | var chartView = BarChartView(frame: r)
32 | //: ### General
33 | chartView.pinchZoomEnabled = false
34 | chartView.drawBarShadowEnabled = false
35 | chartView.doubleTapToZoomEnabled = false
36 | chartView.drawGridBackgroundEnabled = true
37 | chartView.fitBars = true
38 | //: ### BarChartDataEntry
39 | var yVals = [BarChartDataEntry]()
40 | for i in 0..<7
41 | {
42 | yVals.append(BarChartDataEntry(x: Double(i), y: values[i]))
43 | }
44 | //: ### BarChartDataSet
45 | var set1 = BarChartDataSet()
46 | set1 = BarChartDataSet(values: yVals, label: "DataSet")
47 | set1.colors = ChartColorTemplates.vordiplom()
48 | set1.drawValuesEnabled = true
49 |
50 | var dataSets = [ChartDataSet]()
51 | dataSets.append(set1)
52 | //: ### BarChartData
53 | let data = BarChartData(dataSets: dataSets)
54 | chartView.data = data
55 |
56 | chartView.animate(xAxisDuration: 2.0, yAxisDuration: 2.0, easingOption: .easeInBounce)
57 | /*:---*/
58 | //: ### Setup for the live view
59 | PlaygroundPage.current.liveView = chartView
60 | /*:
61 | ****
62 | [Previous](@previous) | [Next](@next)
63 | */
64 |
--------------------------------------------------------------------------------
/Source/Charts/Highlight/PieRadarHighlighter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PieRadarHighlighter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(PieRadarChartHighlighter)
16 | open class PieRadarHighlighter: ChartHighlighter
17 | {
18 | open override func getHighlight(x: CGFloat, y: CGFloat) -> Highlight?
19 | {
20 | guard let chart = self.chart as? PieRadarChartViewBase else { return nil }
21 |
22 | let touchDistanceToCenter = chart.distanceToCenter(x: x, y: y)
23 |
24 | // check if a slice was touched
25 | guard touchDistanceToCenter <= chart.radius else
26 | {
27 | // if no slice was touched, highlight nothing
28 | return nil
29 | }
30 |
31 | var angle = chart.angleForPoint(x: x ,y: y)
32 |
33 | if chart is PieChartView
34 | {
35 | angle /= CGFloat(chart.chartAnimator.phaseY)
36 | }
37 |
38 | let index = chart.indexForAngle(angle)
39 |
40 | // check if the index could be found
41 | if index < 0 || index >= chart.data?.maxEntryCountSet?.entryCount ?? 0
42 | {
43 | return nil
44 | }
45 | else
46 | {
47 | return closestHighlight(index: index, x: x, y: y)
48 | }
49 |
50 | }
51 |
52 | /// - Parameters:
53 | /// - index:
54 | /// - x:
55 | /// - y:
56 | /// - Returns: The closest Highlight object of the given objects based on the touch position inside the chart.
57 | @objc open func closestHighlight(index: Int, x: CGFloat, y: CGFloat) -> Highlight?
58 | {
59 | fatalError("closestHighlight(index, x, y) cannot be called on PieRadarChartHighlighter")
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Interfaces/ICandleChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ICandleChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc
16 | public protocol ICandleChartDataSet: ILineScatterCandleRadarChartDataSet
17 | {
18 | // MARK: - Data functions and accessors
19 |
20 | // MARK: - Styling functions and accessors
21 |
22 | /// the space that is left out on the left and right side of each candle,
23 | /// **default**: 0.1 (10%), max 0.45, min 0.0
24 | var barSpace: CGFloat { get set }
25 |
26 | /// should the candle bars show?
27 | /// when false, only "ticks" will show
28 | ///
29 | /// **default**: true
30 | var showCandleBar: Bool { get set }
31 |
32 | /// the width of the candle-shadow-line in pixels.
33 | ///
34 | /// **default**: 3.0
35 | var shadowWidth: CGFloat { get set }
36 |
37 | /// the color of the shadow line
38 | var shadowColor: NSUIColor? { get set }
39 |
40 | /// use candle color for the shadow
41 | var shadowColorSameAsCandle: Bool { get set }
42 |
43 | /// Is the shadow color same as the candle color?
44 | var isShadowColorSameAsCandle: Bool { get }
45 |
46 | /// color for open == close
47 | var neutralColor: NSUIColor? { get set }
48 |
49 | /// color for open > close
50 | var increasingColor: NSUIColor? { get set }
51 |
52 | /// color for open < close
53 | var decreasingColor: NSUIColor? { get set }
54 |
55 | /// Are increasing values drawn as filled?
56 | var increasingFilled: Bool { get set }
57 |
58 | /// Are increasing values drawn as filled?
59 | var isIncreasingFilled: Bool { get }
60 |
61 | /// Are decreasing values drawn as filled?
62 | var decreasingFilled: Bool { get set }
63 |
64 | /// Are decreasing values drawn as filled?
65 | var isDecreasingFilled: Bool { get }
66 | }
67 |
--------------------------------------------------------------------------------
/Source/Charts/Data/Implementations/Standard/LineScatterCandleRadarChartDataSet.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LineScatterCandleRadarChartDataSet.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 |
14 |
15 | open class LineScatterCandleRadarChartDataSet: BarLineScatterCandleBubbleChartDataSet, ILineScatterCandleRadarChartDataSet
16 | {
17 | // MARK: - Data functions and accessors
18 |
19 | // MARK: - Styling functions and accessors
20 |
21 | /// Enables / disables the horizontal highlight-indicator. If disabled, the indicator is not drawn.
22 | open var drawHorizontalHighlightIndicatorEnabled = true
23 |
24 | /// Enables / disables the vertical highlight-indicator. If disabled, the indicator is not drawn.
25 | open var drawVerticalHighlightIndicatorEnabled = true
26 |
27 | /// `true` if horizontal highlight indicator lines are enabled (drawn)
28 | open var isHorizontalHighlightIndicatorEnabled: Bool { return drawHorizontalHighlightIndicatorEnabled }
29 |
30 | /// `true` if vertical highlight indicator lines are enabled (drawn)
31 | open var isVerticalHighlightIndicatorEnabled: Bool { return drawVerticalHighlightIndicatorEnabled }
32 |
33 | /// Enables / disables both vertical and horizontal highlight-indicators.
34 | /// :param: enabled
35 | open func setDrawHighlightIndicators(_ enabled: Bool)
36 | {
37 | drawHorizontalHighlightIndicatorEnabled = enabled
38 | drawVerticalHighlightIndicatorEnabled = enabled
39 | }
40 |
41 | // MARK: NSCopying
42 |
43 | open override func copy(with zone: NSZone? = nil) -> Any
44 | {
45 | let copy = super.copy(with: zone) as! LineScatterCandleRadarChartDataSet
46 | copy.drawHorizontalHighlightIndicatorEnabled = drawHorizontalHighlightIndicatorEnabled
47 | copy.drawVerticalHighlightIndicatorEnabled = drawVerticalHighlightIndicatorEnabled
48 | return copy
49 | }
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/Tests/Charts/ChartUtilsTests.swift:
--------------------------------------------------------------------------------
1 | import XCTest
2 | @testable import Charts
3 |
4 | class ChartUtilsTests: XCTestCase {
5 |
6 | override func setUp() {
7 | super.setUp()
8 | // Put setup code here. This method is called before the invocation of each test method in the class.
9 | }
10 |
11 | override func tearDown() {
12 | // Put teardown code here. This method is called after the invocation of each test method in the class.
13 | super.tearDown()
14 | }
15 |
16 | func testDecimalWithNaN() {
17 |
18 | let number = Double.nan
19 |
20 | let actual = number.decimalPlaces
21 | let expected = 0
22 |
23 | XCTAssertEqual(expected, actual)
24 | }
25 |
26 | func testDecimalWithInfinite() {
27 |
28 | let number = Double.infinity
29 |
30 | let actual = number.decimalPlaces
31 | let expected = 0
32 |
33 | XCTAssertEqual(expected, actual)
34 | }
35 |
36 | func testDecimalWithZero() {
37 |
38 | let number = 0.0
39 |
40 | let actual = number.decimalPlaces
41 | let expected = 0
42 |
43 | XCTAssertEqual(expected, actual)
44 | }
45 |
46 | func testDecimalWithMaxValue() {
47 |
48 | let number = Double.greatestFiniteMagnitude
49 |
50 | let actual = number.decimalPlaces
51 | let expected = 0
52 |
53 | XCTAssertEqual(expected, actual)
54 | }
55 |
56 | func testDecimalWithMinValue() {
57 |
58 | let number = Double.leastNormalMagnitude
59 |
60 | let actual = number.decimalPlaces
61 | let expected = 310 // Don't think this is supposed to be this value maybe 0?
62 |
63 | XCTAssertEqual(expected, actual)
64 | }
65 |
66 | func testDecimalWithNormalValue() {
67 |
68 | let number = 13.123123
69 |
70 | let actual = number.decimalPlaces
71 | let expected = 1 // Don't think this is supposed to be this value maybe 6?
72 |
73 | XCTAssertEqual(expected, actual)
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/Source/Charts/Components/ChartLimitLine.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ChartLimitLine.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 |
16 | /// The limit line is an additional feature for all Line, Bar and ScatterCharts.
17 | /// It allows the displaying of an additional line in the chart that marks a certain maximum / limit on the specified axis (x- or y-axis).
18 | open class ChartLimitLine: ComponentBase
19 | {
20 | @objc(ChartLimitLabelPosition)
21 | public enum LabelPosition: Int
22 | {
23 | case topLeft
24 | case topRight
25 | case bottomLeft
26 | case bottomRight
27 | }
28 |
29 | /// limit / maximum (the y-value or xIndex)
30 | @objc open var limit = Double(0.0)
31 |
32 | private var _lineWidth = CGFloat(2.0)
33 | @objc open var lineColor = NSUIColor(red: 237.0/255.0, green: 91.0/255.0, blue: 91.0/255.0, alpha: 1.0)
34 | @objc open var lineDashPhase = CGFloat(0.0)
35 | @objc open var lineDashLengths: [CGFloat]?
36 |
37 | @objc open var valueTextColor = NSUIColor.black
38 | @objc open var valueFont = NSUIFont.systemFont(ofSize: 13.0)
39 |
40 | @objc open var drawLabelEnabled = true
41 | @objc open var label = ""
42 | @objc open var labelPosition = LabelPosition.topRight
43 |
44 | public override init()
45 | {
46 | super.init()
47 | }
48 |
49 | @objc public init(limit: Double)
50 | {
51 | super.init()
52 | self.limit = limit
53 | }
54 |
55 | @objc public init(limit: Double, label: String)
56 | {
57 | super.init()
58 | self.limit = limit
59 | self.label = label
60 | }
61 |
62 | /// set the line width of the chart (min = 0.2, max = 12); default 2
63 | @objc open var lineWidth: CGFloat
64 | {
65 | get
66 | {
67 | return _lineWidth
68 | }
69 | set
70 | {
71 | _lineWidth = newValue.clamped(to: 0.2...12)
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/Source/Charts/Jobs/ZoomViewJob.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ZoomViewJob.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(ZoomChartViewJob)
16 | open class ZoomViewJob: ViewPortJob
17 | {
18 | internal var scaleX: CGFloat = 0.0
19 | internal var scaleY: CGFloat = 0.0
20 | internal var axisDependency: YAxis.AxisDependency = .left
21 |
22 | @objc public init(
23 | viewPortHandler: ViewPortHandler,
24 | scaleX: CGFloat,
25 | scaleY: CGFloat,
26 | xValue: Double,
27 | yValue: Double,
28 | transformer: Transformer,
29 | axis: YAxis.AxisDependency,
30 | view: ChartViewBase)
31 | {
32 | super.init(
33 | viewPortHandler: viewPortHandler,
34 | xValue: xValue,
35 | yValue: yValue,
36 | transformer: transformer,
37 | view: view)
38 |
39 | self.scaleX = scaleX
40 | self.scaleY = scaleY
41 | self.axisDependency = axis
42 | }
43 |
44 | open override func doJob()
45 | {
46 | guard
47 | let viewPortHandler = viewPortHandler,
48 | let transformer = transformer,
49 | let view = view
50 | else { return }
51 |
52 | var matrix = viewPortHandler.setZoom(scaleX: scaleX, scaleY: scaleY)
53 | viewPortHandler.refresh(newMatrix: matrix, chart: view, invalidate: false)
54 |
55 | let yValsInView = (view as! BarLineChartViewBase).getAxis(axisDependency).axisRange / Double(viewPortHandler.scaleY)
56 | let xValsInView = (view as! BarLineChartViewBase).xAxis.axisRange / Double(viewPortHandler.scaleX)
57 |
58 | var pt = CGPoint(
59 | x: CGFloat(xValue - xValsInView / 2.0),
60 | y: CGFloat(yValue + yValsInView / 2.0)
61 | )
62 |
63 | transformer.pointValueToPixel(&pt)
64 |
65 | matrix = viewPortHandler.translate(pt: pt)
66 | viewPortHandler.refresh(newMatrix: matrix, chart: view, invalidate: false)
67 |
68 | (view as! BarLineChartViewBase).calculateOffsets()
69 | view.setNeedsDisplay()
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/Source/Charts/Highlight/HorizontalBarHighlighter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HorizontalBarHighlighter.swift
3 | // Charts
4 | //
5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
6 | // A port of MPAndroidChart for iOS
7 | // Licensed under Apache License 2.0
8 | //
9 | // https://github.com/danielgindi/Charts
10 | //
11 |
12 | import Foundation
13 | import CoreGraphics
14 |
15 | @objc(HorizontalBarChartHighlighter)
16 | open class HorizontalBarHighlighter: BarHighlighter
17 | {
18 | open override func getHighlight(x: CGFloat, y: CGFloat) -> Highlight?
19 | {
20 | guard let barData = self.chart?.data as? BarChartData else { return nil }
21 |
22 | let pos = getValsForTouch(x: y, y: x)
23 | guard let high = getHighlight(xValue: Double(pos.y), x: y, y: x) else { return nil }
24 |
25 | if let set = barData.getDataSetByIndex(high.dataSetIndex) as? IBarChartDataSet,
26 | set.isStacked
27 | {
28 | return getStackedHighlight(high: high,
29 | set: set,
30 | xValue: Double(pos.y),
31 | yValue: Double(pos.x))
32 | }
33 |
34 | return high
35 | }
36 |
37 | internal override func buildHighlights(
38 | dataSet set: IChartDataSet,
39 | dataSetIndex: Int,
40 | xValue: Double,
41 | rounding: ChartDataSetRounding) -> [Highlight]
42 | {
43 | guard let chart = self.chart as? BarLineScatterCandleBubbleChartDataProvider else { return [] }
44 |
45 | var entries = set.entriesForXValue(xValue)
46 | if entries.count == 0, let closest = set.entryForXValue(xValue, closestToY: .nan, rounding: rounding)
47 | {
48 | // Try to find closest x-value and take all entries for that x-value
49 | entries = set.entriesForXValue(closest.x)
50 | }
51 |
52 | return entries.map { e in
53 | let px = chart.getTransformer(forAxis: set.axisDependency)
54 | .pixelForValues(x: e.y, y: e.x)
55 | return Highlight(x: e.x, y: e.y, xPx: px.x, yPx: px.y, dataSetIndex: dataSetIndex, axis: set.axisDependency)
56 | }
57 | }
58 |
59 | internal override func getDistance(x1: CGFloat, y1: CGFloat, x2: CGFloat, y2: CGFloat) -> CGFloat
60 | {
61 | return abs(y1 - y2)
62 | }
63 | }
64 |
--------------------------------------------------------------------------------