Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Give the users customizable axis label limits (Fixes #2085) #2894

Merged
merged 2 commits into from
Jan 9, 2018

Conversation

igzrobertoestrada
Copy link
Contributor

This change adds the ability to users to override the imposed limitation of at least 2 labels per axis and at most 25 labels per axis if they need to and at their own risk.

By default these customizable limits are hardcoded to the previous limits, at least 2 labels, at most 25.

The rationale for this change is that when coming from previous versions of Charts, users are able to use –at least on the X axis– as many labels as they wish and when they upgrade to a newer version of Charts they find that they have lost functionality, and this change brings that functionality back.

This change adds the ability to users to override the imposed limitation of at least 2 labels per axis and at most 25 labels per axis at their own risk. By default these customizable limits are hardcoded to the previous limits, at least 2 labels, at most 25.
@codecov-io
Copy link

codecov-io commented Oct 17, 2017

Codecov Report

Merging #2894 into master will increase coverage by 3.35%.
The diff coverage is 0%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #2894      +/-   ##
==========================================
+ Coverage   19.64%   22.99%   +3.35%     
==========================================
  Files         113      116       +3     
  Lines       13792    15540    +1748     
  Branches        0      272     +272     
==========================================
+ Hits         2709     3573     +864     
- Misses      11083    11931     +848     
- Partials        0       36      +36
Impacted Files Coverage Δ
Source/Charts/Components/AxisBase.swift 45.94% <0%> (-2.8%) ⬇️
...ource/Charts/Renderers/ChartDataRendererBase.swift 36.36% <0%> (-10.7%) ⬇️
Source/Charts/Components/YAxis.swift 74.64% <0%> (-5.02%) ⬇️
Source/Charts/Components/LegendEntry.swift 75% <0%> (-5%) ⬇️
.../Charts/Formatters/DefaultAxisValueFormatter.swift 54% <0%> (-3.15%) ⬇️
...urce/Charts/Formatters/DefaultValueFormatter.swift 52% <0%> (-2.77%) ⬇️
Source/Charts/Renderers/LineChartRenderer.swift 53.51% <0%> (-2.22%) ⬇️
Source/Charts/Renderers/YAxisRenderer.swift 54.25% <0%> (-1.7%) ⬇️
Source/Charts/Charts/ChartViewBase.swift 22.69% <0%> (-1.55%) ⬇️
Source/Charts/Renderers/AxisRendererBase.swift 57.64% <0%> (-1.39%) ⬇️
... and 106 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0a63b74...d26acd0. Read the comment docs.

@liuxuan30
Copy link
Member

I am not sure if allowing other values could raise any issue when >25 ?

@igzrobertoestrada
Copy link
Contributor Author

I'm using 61 labels in the X axis in an AppStore production app and it's working just fine.

In my case, this value comes as a client requirement for a feature. Many other people may be in the same or similar situation just as they tell in #2085 and they and/or their clients cannot afford a step back in functionality compared to what they could have in prior versions.

Many people will be safe with the 25-labels limitation. It will work wonders for them and they won't even notice it, but others may need more flexibility when it comes to customizing their charts in order to satisfy requirements that –in many cases– are non negotiable.

@liuxuan30
Copy link
Member

liuxuan30 commented Oct 27, 2017

I wonder how can you draw 61 labels on x axis on a mobile screen? ipad or iPhone?

I am OK with this change. But what I concerned is in somewhere, there is one piece of code that only works with <25 values, if >25, bad things happen.
@danielgindi do you remember anything? Is this safe to merge?

@alejandroluengo
Copy link

It's ok, merge needed for sure

@igzrobertoestrada
Copy link
Contributor Author

@liuxuan30 I have the barchart inside a UIScrollView so the users can swipe through the chart because having the entire chart on a relatively small region of an iPhone screen in portrait mode would be an awful user experience and really really difficult to read.

@liuxuan30
Copy link
Member

@igzrobertoestrada why your question is related to this PR?
It's your choice to show the full chart or zoom in to only show some; and there are APIs to restrict how many items you can see. e.g. visibleXrange.

@igzrobertoestrada
Copy link
Contributor Author

@liuxuan30 Because I need to maintain a piece of code that requires that charts is able to render more than 25 labels as it did in previous versions.

@@ -213,6 +213,16 @@ open class AxisBase: ComponentBase
/// the total range of values this axis covers
@objc open var axisRange = Double(0)

/// The minumum number of labels on the axis
@objc open var axisMinLabels: Int = Int(2) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Type inference is sufficient. @objc open var axisMinLabels = 2

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in new commit. Removed : Int but maintained Int(2) for consistence with the rest of the codebase.

@jjatie
Copy link
Collaborator

jjatie commented Jan 6, 2018

@igzrobertoestrada Isn't having the chart in a UIScrollView with many labels, the same things as just scrolling through a chart with fewer labels? The only difference is that in the latter case the you can always see the y-axis.

@igzrobertoestrada
Copy link
Contributor Author

@jjatie For my business case, nope. I don't need to see the Y axis at all and I need exactly 60 labels to show 60 values, each one representing a value for a day in a 60-day billing cycle.

@@ -214,12 +214,12 @@ open class AxisBase: ComponentBase
@objc open var axisRange = Double(0)

/// The minumum number of labels on the axis
@objc open var axisMinLabels: Int = Int(2) {
@objc open var axisMinLabels = Int(2) {
didSet { axisMinLabels = axisMinLabels > 0 ? axisMinLabels : oldValue }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we use didSet or setter for this check here? @jjatie

@liuxuan30
Copy link
Member

Again I don't have issue to let user decide the value instead o capping it at 25. What concerns me is I don't know if there is any function that take 25 as granted, when we change to larger ones, it broke. Only @danielgindi might remember.
If we think this can be merged and later let user report what's breaking, it's good to go

@objc open var axisMaxLabels = Int(25) {
didSet { axisMinLabels = axisMaxLabels > 0 ? axisMaxLabels : oldValue }
}

/// the number of label entries the axis should have
/// max = 25,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comment might consider to change as well.

@jjatie
Copy link
Collaborator

jjatie commented Jan 8, 2018

@danielgindi What are your thoughts on adding this to the library? Technically there's no reason to impose a limit on the number of labels, but from a data visualization perspective it makes sense to limit it. From what I see in the framework, it seems we should allow it.

@jjatie
Copy link
Collaborator

jjatie commented Jan 8, 2018

@liuxuan30 I think if there are functions that use require 25 already, we should consider those bugs that need to be fixed. If we accept this change, we will just have to fix those issues as they come up.

@liuxuan30
Copy link
Member

liuxuan30 commented Jan 9, 2018

I dont know if there is any. Just my guess. So far I dont see

@liuxuan30
Copy link
Member

let's merge it

@liuxuan30 liuxuan30 merged commit 2c584bf into ChartsOrg:master Jan 9, 2018
@jjatie
Copy link
Collaborator

jjatie commented Jan 9, 2018

@liuxuan30 FYI I'm available for about an hour.

philipengberg pushed a commit to tonsser/Charts that referenced this pull request Jan 19, 2018
…hartsOrg#2894)

* Give the users customizable axis label limits (Fixes ChartsOrg#2085)

This change adds the ability to users to override the imposed limitation of at least 2 labels per axis and at most 25 labels per axis at their own risk. By default these customizable limits are hardcoded to the previous limits, at least 2 labels, at most 25.

* Type inference was enough to declare 'axisMinLabels' and 'axisMaxLabels' properties
FreddyZeng added a commit to FreddyZeng/Charts that referenced this pull request Jan 20, 2018
* 'master' of https://github.com/danielgindi/Charts: (34 commits)
  Fixed X-Axis Labels Not Showing (ChartsOrg#3154) (ChartsOrg#3174)
  fix programatical unhighlighting for BarCharView (ChartsOrg#3159)
  Give the users customizable axis label limits (Fixes ChartsOrg#2085) (ChartsOrg#2894)
  bump pod version
  chart views now use open legend renderer property instead of internal one (ChartsOrg#3149)
  Fix axis label disappear when zooming in deep enough (ChartsOrg#3132)
  added DataApproximator+N extension (ChartsOrg#2848)
  Minor cleanup to Highlighter types (ChartsOrg#3003)
  Refactored ChartUtils method into CGPoint extension (ChartsOrg#3087)
  Update ViewPortHandler.swift (ChartsOrg#3143)
  add option to build demo projects unit tests on iOS (ChartsOrg#3121)
  Replaced relevant `ChartUtils` methods with `Double` extensions (ChartsOrg#2994)
  Update 4.0.0 with master (ChartsOrg#3135)
  Removed redundant ivars in BarLineChartViewBase (ChartsOrg#3043)
  fix ChartsOrg#1830. credit from ChartsOrg#2049 (ChartsOrg#2874)
  Makes ChartsDemo compiling again (ChartsOrg#3117)
  Fixed using wrong axis (Issue ChartsOrg#2257)
  Removed methods and properties deprecated in 1.0 (ChartsOrg#2996)
  for ChartsOrg#3061 revert animationUpdate() and animationEnd() not trigger crash if subclass does nothing
  The backing var is not necessary. (ChartsOrg#3000)
  ...

# Conflicts:
#	Source/Charts/Data/Implementations/Standard/LineChartDataSet.swift
#	Source/Charts/Highlight/BarHighlighter.swift
#	Source/Charts/Renderers/BarChartRenderer.swift
kzyryanov pushed a commit to fishbrain/Charts that referenced this pull request Feb 20, 2018
…hartsOrg#2894)

* Give the users customizable axis label limits (Fixes ChartsOrg#2085)

This change adds the ability to users to override the imposed limitation of at least 2 labels per axis and at most 25 labels per axis at their own risk. By default these customizable limits are hardcoded to the previous limits, at least 2 labels, at most 25.

* Type inference was enough to declare 'axisMinLabels' and 'axisMaxLabels' properties
kalmurzayev pushed a commit to kalmurzayev/Charts that referenced this pull request Feb 26, 2018
…hartsOrg#2894)

* Give the users customizable axis label limits (Fixes ChartsOrg#2085)

This change adds the ability to users to override the imposed limitation of at least 2 labels per axis and at most 25 labels per axis at their own risk. By default these customizable limits are hardcoded to the previous limits, at least 2 labels, at most 25.

* Type inference was enough to declare 'axisMinLabels' and 'axisMaxLabels' properties
danielgindi added a commit to danielgindi/MPAndroidChart that referenced this pull request Jan 23, 2020
danielgindi added a commit to danielgindi/MPAndroidChart that referenced this pull request Jan 23, 2020
danielgindi added a commit to danielgindi/MPAndroidChart that referenced this pull request Jan 23, 2020
RonakAndroid added a commit to RonakAndroid/MPAndroidChart that referenced this pull request Oct 27, 2020
* Create FUNDING.yml

* Update FUNDING.yml

* Update README.md

* Safe guards

These will be even more important when moving to Kotlin ranges

* Added highlightColor parameter for pie charts

ChartsOrg/Charts#2961

* Consider axis dependency in Combined chart

ChartsOrg/Charts#2874

* Added an implementation of Douglas Peucker with resultCount input

ChartsOrg/Charts#2848

* Fixed axis label disappearing when zooming in

ChartsOrg/Charts#3132

* Make min/max axis labels configurable

ChartsOrg/Charts#2894

* Avoid race condition for interval/intervalMagnitude

ChartsOrg/Charts#2377

* Custom text alignment for no-data

ChartsOrg/Charts#3199

* Select correct axis for legend distance calculation in horz bar chart

ChartsOrg/Charts#2214

* Use correct color index for bubble chart

ChartsOrg/Charts#3202

* Added dataIndex param for highlightValue (combined charts)

ChartsOrg/Charts#2852

* Reset min/max when clearing ChartDataSet

ChartsOrg/Charts#3265

* Call notifyDataChanged for an opportunity for subclasses

* Add a warning message if pie chart has more than one data set

ChartsOrg/Charts#3286

* Add option to disable clipping data to contentRect

ChartsOrg/Charts#3360

* Support for labelXOffset for YAxis label

* This is for the inline bubble selection

ChartsOrg/Charts#3548

* Fixed index out of bounds issue when using stacked bar chart

ChartsOrg/Charts@b03cf16

* Improve min/max calculation

ChartsOrg/Charts#3650

* Call onChartScale listener after double-tap-zoom

ChartsOrg/Charts#3770

* Multiple colors for valueline

ChartsOrg/Charts#3709

* Renamed values -> entries for consistency

ChartsOrg/Charts#3847

* Improved negative offset for horz bar chart

ChartsOrg/Charts#3854

* maxHeight didn't account for the last label

ChartsOrg/Charts#3900

* Fixed a bug where a pie slice without highlight enabled is hidden

ChartsOrg/Charts#3969

* Remove unexpected dash line during linear animation

ChartsOrg/Charts#4094

* Corrected check for line in vertical bounds

ChartsOrg/Charts#4100

* Finalized vertical line collision check

* Fixed merge residue

* Implement a more generic Fill class instead of GradientColor

Support HorizontalBarChart too.

* Update LICENSE

The LICENSE file was not properly filled out. It was missing some templates that were supposed to be filled in at the end of the license.  Additionally, the entire Apache 2.0 license is not required on a project that makes use of it. Only this disclaimer is required.

See http://www.apache.org/licenses/LICENSE-2.0#apply under the "How to apply the Apache License to your work" for more information.

* fix NPE when use solid color with barchart

* Update BarChartRenderer.java

* Update HorizontalBarChartRenderer.java

* Update BarChartRenderer.java

* Update README.md

* Update README.md

* Update README.md

* Update LICENSE

* Revert: e5b6619 - bring back polymorphism to value formatters

If anyone does not know how to add a space or change the format in anyway,
please learn how to subclass.

Co-authored-by: Philipp Jahoda <phil.jahoda@gmail.com>
Co-authored-by: Daniel Cohen Gindi <danielgindi@gmail.com>
Co-authored-by: Nathan Fiscaletti <nate.fiscaletti@gmail.com>
Co-authored-by: Anirut Teerabut <anirut.t@linecorp.com>
Co-authored-by: Anirut Teerabut <oatrice.dev@gmail.com>
ysravankumar added a commit to ysravankumar/MPAndroidChart that referenced this pull request Feb 16, 2021
* Extend test cases (for bugfix)

* Remove unused local variable

* Removed redundancies

* Fixed entry searching algorithm to handle sequential same values

* Move on from the deprecated property in the demos

* Avoid crash for `centerAxisLabelsEnabled` when entry count == 1

* Fixes for cubic bezier edges

* Removed redundant condition

* Update gradle

* Guard `roundToNextSignificant` and `decimal` from invalids

* Minor fixes for interval in axis labels

* Allow label centering for 1 label

* Set z-index of markers to be the highest

* [FIX] not find centeringEnabled

* Extend test cases

* Refactoring, prepare example for testing highlight

* Fix typo

* Corrected calcMinMaxY for autoScaleMinMax

* Feature: spaceMin/spaceMax for axis

* Default spaceMin/spaceMax for bar charts

This avoids having to set custom axisMinimum/axisMaximum, or offsetting x

* Improved highlight for scatter/bubble, and fixes highlightValueWithX

* Avoid crash when dataset is empty

* Update gradle & android sdk

* Default spaceMin/max for xAxis in candlestick charts

* Fixed last label of line chart not rendering

* Fixed bar chart demo first value being empty

* Clear up grouped bar example

* Make highlightFullBarEnabled feature work again

* Update README.md

* Update README.md

* Update README.md

* Move to Realm v2.0.2, update example

* Migrate to Realm v2.0.2, fix example

* Update AxisBase.java

Mistake fixed

* Make automatically disabling slice-spacing an opt-in feature

* Bugfix: Corrected clipRect on the proper rect variable

* Fixed glitch in clipping rects.

It's the Android's renderer's bug.
When specifying exact clipping rects,
  they are clipping more than they should!
So drawing a thin 1px line on the edge of a clipping rect fail.
Instead of insetting by half the line width, inset by full line width.

* Renamed new property getter

* Added `clipValuesToContent` property for clipping values

* Added missing isDrawBordersEnabled getter

* Fixed weird glitch in mixed (pos/neg) stacked bars highlight

ChartsOrg/Charts#1744
ChartsOrg/Charts#1726

* Fixed double calculation of xAxis spacing

* Fix: typo for October

* Gradle updates

* Fixed EPSILON. (Closes PhilJay#2432)

Closes PhilJay#2424
Closes PhilJay#2394
Closes PhilJay#2393
Closes PhilJay#2385

* Added IndexAxisValueFormatter, to allow for easy x-axis labels like MPAndroidChart 2.0

* Fixed a bug where the mod-360 bypass draws a full-circle for 0 slices.

* Upgrade version

* Upgrade manifest

* Update README.md

* Update README.md

* Update README.md

* drawBottomYLabelEntryEnabled

* Gradle updates

* resetZoom()

* Correctly position 0 in stacked bar

* Fix for default text size being set in PX instead of DP

The default text size in ComponentBase was defined as 10 pixels
instead of 10dp, which causes tiny text and does not reflect
the javadoc and the general behavior of setTextSize(...)

* Fix circles inherit alpha (Fixes PhilJay#2620)

ISSUE:
When using multiple LineDataSets like the follows:

    int solidColor = 0xFFFF00FF;
    dataSet.setColor(solidColor);
    dataSet.setCircleColor(solidColor);

    int semiTransparentColor = 0x8A000000;
    fadedSet.setColor(semiTransparentColor);

    LineData data = new LineData(dataSet, fadedSet);

the circles in 'dataSet' will rendered with the alpha from
fadedSet (0x8A).

The reason for this is that mRenderPaint is not reset properly
before drawing the circles. The first time drawCircles is called
the imageCache.fill(...) method is used where the color is set by
mRenderPaint.setColor(set.getCircleColor(i)), restoring the alpha
to 0xFF. The second time homever, imageCache.fill(...) is not called
which means that mRenderPaint will use it's old color/alpha,
which in this case is from fadedSet.

TEST INFO:
To trigger the issue, add the following to LineChartActivity1:

    final ArrayList<Entry> fadedEntries = new ArrayList<>();
    for (int i = 0; i < count; i++) {

        float val = (float) (Math.random() * range) + 3;
        fadedEntries.add(new Entry(i, val));
    }
    final LineDataSet fadedDateSet = new LineDataSet(fadedEntries, "Faded");
    fadedDateSet.setColor(0x42000000);

    dataSets.add(fadedDateSet); // add the datasets

and launch the first item in the example app.

SOLUTION:
This commit replaces mRenderPaint with null when drawing the circle
bitmap. If circleColor has been defined with a semi-transparent
color, it will be drawn that way in the cached bitmap, hence the the
bitmap itself does not need to be drawn with an alpha.

* fix tests for java executable location. bug PhilJay#2805
PhilJay#2805

* fix PhilJay#2813

* Implemented icon support

* Added examples for icon entries

* Improved feb29 formula

* Moved auto scale before render of axis lines

ChartsOrg/Charts#2177

* Consider isEnabled in more axis rendering cases

* Fix for missing setters in getInstance method

The zoomAndCenterAnimated method in BarLineChartBase crashes with a NullPointer exception because the yAxis variable is null when onAnimationUpdate is called. The yAxis is null because of missing setters in the getInstance method of AnimatedZoomJob.

* Update README.md

* Update README.md

* Update README.md

* Updating versions

* Remove line width minimum constraint

* Update README.md

* Update README.md

* Update README.md

* Clear lastHighlighted when `clear` is called

* Create LICENSE

* Fix some potential NPEs with WeakReference usage

Even if the WeakReference field is not null, the contained value may be null.  Additionally, you always need a strong reference to the value to ensure it isn't garbage collected while you're using it.

* Update README.md

* Update README.md

* Run view port jobs after applying changes

* Add default x spacing (half width) for scatter chart as well

* Fix CombinedChartView not drawing markers

* Allow locking drag on either axes

* add option to draw limit lines on top of data

* Refactored LargeValueFormatter

* Update README.md

* Update gradle and dependencies

* Out comment gradle wrapper

* Update maven android plugin

* Add maven plugin to example

* Add new google repo

* Add new google repo

* Update README.md

* Update version

* Update README.md

* Update README.md

* Added option to set restrictions for Y axis autoscaling.

* Update gitignore, add assets

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Add files via upload

* Delete googlee1205ea43aa2c32a.html

* Avoid that the last label entry in the x-labels clip off the edge of the screen PhilJay#3819

* Add option for using slice color as value line color

Fixes: PhilJay#3897

* Rename RadarChartActivitry to RadarChartActivity

* Remove unused imports

* Remove Custom Check

calculate() no longer checks if min and max is custom, it just adds the padding.

* update to Android Studio 3.1.2

* Create ISSUE_TEMPLATE.md

* Create PULL_REQUEST_TEMPLATE.md

* refactor(EasingFunction): Simplified EasingFunction

EasingFunction has been simplified greatly, and I've added a MUCH needed
annotation to relevant methods.

Easing.EasingOptions has been deprecated, as well as any methods using
them. Converting is as simple as deleting the "EasingOptions" part.

A new signature is available for animateXY()!

You are now able to pass one EasingFunction to animateXY() if you want
both axes to be animated the same way.

Quietly included are some gradle build updates, incrementing the
appcompat version to 27.1.1, and using the new `javacompiler` to avoid
deprecation of `javacompile`

* fix(docs): Broken Contributing link

* Update issue templates

* Downgrade ISSUE_TEMPLATE.md to generic issue

* Update Bug_report.md

quick fix

* Update CONTRIBUTING.md

Condensed CONTRIBUTING and added helpful reference links.

And cake!

* Update README.md

* Delete lingering MyEasingFunction.java

I made the decision to remove this file instead of updating it, as I'm
sure most will instead prefer to look at the actual Easing class. If you
miss this example class... ¯\_(ツ)_/¯

* - multiple gradient color

* docs(templates): Update Issue & PR templates

I've updated the issue and pull request templates, again. This time I
looked to the node.js request library for inspiration.

It's no secret that this project has been attracting a LOT of very
low-quality issues. Almost all are asking questions that can be easily
answered if the person looked at the example project or the wiki.

Specifically, the new Support_help.md file.

This file will hopefully bait these low-quality support questions and
reduce the number of opened issues regarding debugging or support
significantly.

I've updated the default ISSUE_TEMPLATE.md to be a copy of Bug_report.md
to force people to read that notice text if they decide to not choose
any of the templates.

* chore(template): Move templates to .github folder

* Update and reorganise copy data sets methods (Fix for PhilJay#1604).

Copying class properties is always done in protected copy method.

* Fixed code review comments.

* Remove mLabelRotatedHeight counted twice, when calculating legend offsets. (Fix for PhilJay#2369).

Removed statements where completely not needed as calculating offsets is alredy done in BarLineCharBase#calculateOffsets(...)

* Fixed Javadoc

* Remove redundant findViewById casts, that became obsolete after migration to API 26.

* docs(README): Update & simplify README

- Re-ordered some of the sections
- Simplified some sections
- Reformatted here and there
- Added a few emojis, how cute!

The goal of this change was to hopefully further reduce the amount of
issue support/ question spam. By moving the sections around to show the
more important parts higher up, like usage and documentation links, I
hope this will make it easier for people to find the documentation.

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Huge Project Refresh

Before anyone freaks out, all these changes are under-the-hood, meaning that you probably won't even notice them at all.

The biggest difference is raising the minSdkVersion from 9 to 14. Recently android bumped this number interally as there are basically no devices running lower than 14 anymore. Sorry but you are just wasting your time if you are trying to support anything lower than 14 now.

The next biggest change is updating the project to the new AndroidX libraries, which changes some imports and nothing else really.

The third biggest change is fixing a few bugs in the code that cause values to be drawn even if there are none, which results in your app crashing. Surprisingly, these checks already existed in a few of the newer chart types, but most lacked this simple check.

Other than those three changes, nothing else is functionally different. Well, saving to gallery works on all charts in the example app now, and you can quickly see the code for each example in the menus.

The only real potential "breaking" change is that charts are now saved as PNGs by default instead of JPGs if you go the route of not specifying as a JPG. You may want to double check your file sizes as PNGs can be larger than low quality JPGs.

I still have more plans for simplifying the API and fixing other issues with the project, for the small few that closely pay attention to individual commits: there's going to be more soon.

* More Linting

Lots of things in the example app are now marked with the 'final' modifier, and saveToGallery() is protected in classes that implement it. As well, new suppressions are in a few places.

NEW text is now removed completely. Looks like this has been unused for a long time and it's just stuck around anyway.

* More Cleanup

I've removed the realm examples, mainly because the library was buggy.
In the previous commit, I already removed the examples from the list
since they didn't add anything to the overall demonstration. I thought
that if anyone wants to use realm.io with the charts, they can see the
actual library.

The file structure has been updated to match how Android Studio does
things. Some files added way back when have been deleted as they don't
do anything but cause the linter to freak out about 'unused properties'

All 'build.gradle' files have been refreshed as well.

Small addition to the README file to add a quick way to reach sections
of the page.

* Bump version to 3.1.0-alpha

* Fix link error

* New ValueFormatter

I created a simplified value formatter class, which is an abstract class rather
than an interface.

The switch was chosen because the new format has all the methods predefined
(something an interface wouldn't allow) meaning you can extend it and only
change what you want. This also means that you only need one value formatting
class for labels rather than two different classes, it just makes more sense.

Please check the method signatures to learn how to use them, I'm sure you'll
find this new format is much more customizable and faster to use.

I've made the class abstract even though there are no abstract methods or
fields, this is because it would certainly be a mistake to create a
ValueFormatter and not override any methods.

To convert existing code, just use 'extends' instead of 'implements' and change
the names to 'ValueFormatter'. You'll need to change the methods you overwrite
as well, just check the class and use the one you need.

* Remove Deprecated Things

Long deprecated Legend constructor and positioning has been removed, it was
replaced with a new way to position the Legend.

The old Easing options have been removed now, accessing them is as easy as
removing the `EasingOption` part, such that the names look like
`Easing.Linear` or `Easing.EaseInOutQuad` now.

* Remove unnecessary API checks

Also added run configuration for the MPChartExample.
Removed deprecated Legend stuff.

* Add Curved Slices to Pie Chart

Finally added support for rounded slices, and somewhat improved the code
for the PieChartRenderer class.

* Add option to set minimum angles

Allows to force minimum slice angles when drawing charts, which means that any
slices with angles lower than the minimum will be drawn with the minimum angle.

When changing this setting on the fly, you have to call
`notifyDataSetChanged()` and `invalidate()` for the minimum angle to take
effect.

This only functions if all slices can be drawn with the minimum angle. For
example if a chart has 5 slices, the largest functioning minimum angle is
`72f` degrees on a 360 degree chart, or 20% of the chart's `maxAngle`.

* Update README.md

* Update Bug_report.md

* Update Feature_request.md

* Update Support_help.md

* Minor changes to project and example

* New example app release

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* PercentFormatter: make space between number and percent sign optional

* fix little typo

* Update gradle

* Create FUNDING.yml

* Update FUNDING.yml

* Update README.md

* Safe guards

These will be even more important when moving to Kotlin ranges

* Added highlightColor parameter for pie charts

ChartsOrg/Charts#2961

* Consider axis dependency in Combined chart

ChartsOrg/Charts#2874

* Added an implementation of Douglas Peucker with resultCount input

ChartsOrg/Charts#2848

* Fixed axis label disappearing when zooming in

ChartsOrg/Charts#3132

* Make min/max axis labels configurable

ChartsOrg/Charts#2894

* Avoid race condition for interval/intervalMagnitude

ChartsOrg/Charts#2377

* Custom text alignment for no-data

ChartsOrg/Charts#3199

* Select correct axis for legend distance calculation in horz bar chart

ChartsOrg/Charts#2214

* Use correct color index for bubble chart

ChartsOrg/Charts#3202

* Added dataIndex param for highlightValue (combined charts)

ChartsOrg/Charts#2852

* Reset min/max when clearing ChartDataSet

ChartsOrg/Charts#3265

* Call notifyDataChanged for an opportunity for subclasses

* Add a warning message if pie chart has more than one data set

ChartsOrg/Charts#3286

* Add option to disable clipping data to contentRect

ChartsOrg/Charts#3360

* Support for labelXOffset for YAxis label

* This is for the inline bubble selection

ChartsOrg/Charts#3548

* Fixed index out of bounds issue when using stacked bar chart

ChartsOrg/Charts@b03cf16

* Improve min/max calculation

ChartsOrg/Charts#3650

* Call onChartScale listener after double-tap-zoom

ChartsOrg/Charts#3770

* Multiple colors for valueline

ChartsOrg/Charts#3709

* Renamed values -> entries for consistency

ChartsOrg/Charts#3847

* Improved negative offset for horz bar chart

ChartsOrg/Charts#3854

* maxHeight didn't account for the last label

ChartsOrg/Charts#3900

* Fixed a bug where a pie slice without highlight enabled is hidden

ChartsOrg/Charts#3969

* Remove unexpected dash line during linear animation

ChartsOrg/Charts#4094

* Corrected check for line in vertical bounds

ChartsOrg/Charts#4100

* Finalized vertical line collision check

* Fixed merge residue

* Implement a more generic Fill class instead of GradientColor

Support HorizontalBarChart too.

* Update LICENSE

The LICENSE file was not properly filled out. It was missing some templates that were supposed to be filled in at the end of the license.  Additionally, the entire Apache 2.0 license is not required on a project that makes use of it. Only this disclaimer is required.

See http://www.apache.org/licenses/LICENSE-2.0#apply under the "How to apply the Apache License to your work" for more information.

* fix NPE when use solid color with barchart

* Update BarChartRenderer.java

* Update HorizontalBarChartRenderer.java

* Update BarChartRenderer.java

* Update README.md

* Update README.md

* Update README.md

* Update LICENSE

* Revert: e5b6619 - bring back polymorphism to value formatters

If anyone does not know how to add a space or change the format in anyway,
please learn how to subclass.

* Update README.md

* Update README.md

Co-authored-by: PhilJay <phil.jahoda@gmail.com>
Co-authored-by: Voicu <nortonedd@yahoo.com>
Co-authored-by: Daniel Cohen Gindi <danielgindi@gmail.com>
Co-authored-by: Mark <mayq0518@163.com>
Co-authored-by: nielsz <nielsz.spam@gmail.com>
Co-authored-by: Evgeniy <Ewg777@users.noreply.github.com>
Co-authored-by: Mahesh Gaya <maheshgaya@users.noreply.github.com>
Co-authored-by: Patrick Ivarsson <patrick.ivarsson@sonymobile.com>
Co-authored-by: travisfw <none@none>
Co-authored-by: Stephen McBride <stephenmcbride@users.noreply.github.com>
Co-authored-by: Scott Kennedy <skennedy27@gmail.com>
Co-authored-by: davidgoli <davigoli@gmail.com>
Co-authored-by: Maxim Pestryakov <MaximPestryakov@users.noreply.github.com>
Co-authored-by: Pawel Grzybek <grzybek@gmail.com>
Co-authored-by: zhanglong <zhanglong@zhanglongdeMac-mini.local>
Co-authored-by: sembozdemir <sembozdemir@gmail.com>
Co-authored-by: Wilder Pereira <wilder_roberto@hotmail.com>
Co-authored-by: almic <mick.ashton@flare-esports.net>
Co-authored-by: Hannes Achleitner <hannes.software@gmx.at>
Co-authored-by: Anirut Teerabut <oatrice.dev@gmail.com>
Co-authored-by: RobertZagorski <robertzagorsky@gmail.com>
Co-authored-by: duchampdev <duchampdev@outlook.com>
Co-authored-by: Nathan Fiscaletti <nate.fiscaletti@gmail.com>
Co-authored-by: Anirut Teerabut <anirut.t@linecorp.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants