This wiki page focuses on the AxisBase
class, the baseclass of both XAxis
(XAxis) and YAxis
(YAxis). Introduced in v2.0.0
Video Tutorials
If you are interested in detailed video tutorials (📹 | 🖥️), have a look at the downloads. These videos made by the developer himself explain e.g. how you can configure the X- and Y-axis in detail. Source code is also included.
AxisBase
The following methods mentioned below can be applied to both axes.
The axis classes allow specific styling and consist (can consist) of the following components/parts:
- The labels (drawn in vertical (y-axis) or horizontal (x-axis) alignment), which contain the axis description values
- A so called “axis-line” that is drawn directly next to and parallel to the labels
- The “grid-lines”, each originating from an axis-label in horizontal direction
LimitLines
, that allow to present special infomation, like borders or constraints
Control which parts (of the axis) should be drawn
setEnabled(boolean enabled)
: Sets the axis enabled or disabled. If disabled, no part of the axis will be drawn regardless of any other settings.setDrawLabels(boolean enabled)
: Set this to true to enable drawing the labels of the axis.setDrawAxisLine(boolean enabled)
: Set this to true if the line alongside the axis (axis-line) should be drawn or not.setDrawGridLines(boolean enabled)
: Set this to true to enable drawing the grid lines for the axis.
Customizing the axis range (min / max)
setAxisMaximum(float max)
: Set a custom maximum value for this axis. If set, this value will not be calculated automatically depending on the provided data.resetAxisMaximum()
: Call this to undo a previously set maximum value. By doing this, you will again allow the axis to automatically calculate it’s maximum.setAxisMinimum(float min)
: Set a custom minimum value for this axis. If set, this value will not be calculated automatically depending on the provided data.resetAxisMinimum()
: Call this to undo a previously set minimum value. By doing this, you will again allow the axis to automatically calculate it’s minimum.setStartAtZero(boolean enabled)
: Deprecated – UsesetAxisMinValue(...)
orsetAxisMaxValue(...)
instead.setInverted(boolean enabled)
: If set to true, this axis will be inverted which means the highest value will be on the bottom, the lowest value on top.setSpaceTop(float percent)
: Sets the top spacing (in percent of the total axis-range) of the highest value in the chart in comparison to the highest value on the axis.setSpaceBottom(float percent)
: Sets the bottom spacing (in percent of the total axis-range) of the lowest value in the chart in comparison to the lowest value on the axis.setShowOnlyMinMax(boolean enabled)
: If enabled, this axis will only show it’s minimum and maximum value. This will ignore/override the defined label-count (if not forced).setLabelCount(int count, boolean force)
: Sets the number of labels for the y-axis. Be aware that this number is not fixed (if force == false) and can only be approximated. If force is enabled (true), then the exact specified label-count is drawn – this can lead to uneven numbers on the axis.setPosition(YAxisLabelPosition pos)
: Sets the position where the axis-labels should be drawn. Either INSIDE_CHART or OUTSIDE_CHART.setGranularity(float gran)
: Sets the minimum interval between the y-axis values. This can be used to avoid value duplicating when zooming in to a point where the number of decimals set for the axis no longer allow to distinguish between two axis values.setGranularityEnabled(boolean enabled)
: Enables the granularity feature that limits the interval of the y-axis when zooming in. Default: false
Styling / modifying the axis
setTextColor(int color)
: Sets the color of the axis labels.setTextSize(float size)
: Sets the text-size of the axis labels in dp.setTypeface(Typeface tf)
: Sets a customTypeface
for the axis labels.setGridColor(int color)
: Sets the color of the grid-lines of this axis.setGridLineWidth(float width)
: Sets the width of the grid-lines of this axis.setAxisLineColor(int color)
: Sets the color of the axis-line of this axis.setAxisLineWidth(float width)
: Sets the width of the axis-line of this axis.enableGridDashedLine(float lineLength, float spaceLength, float phase)
: Enables the grid line to be drawn in dashed mode, e.g. like this “- – – – – -“. “lineLength” controls the length of the line pieces, “spaceLength” controls the space between the lines, “phase” controls the starting point.
Formatting axis values
For formatting axis values, you can use the ValueFormatter
class. A detailed tutorial on formatting axis values can be found here. There is also a tutorial-video which covers formatting axis values.
Limit Lines
Both axes support so called LimitLines
that allow to present special information, like borders or constraints. LimitLines
added to the YAxis
are drawn in horizontal direction, and in vertical direction when added to the XAxis
. This is how you add and remove LimitLines
from the axis:
addLimitLine(LimitLine l)
: Adds a newLimitLine
to this axis.removeLimitLine(LimitLine l)
: Removes the specifiedLimitLine
from this axis.- More methods for adding / removing available as well.
setDrawLimitLinesBehindData(boolean enabled)
: Allows to control the z-order between theLimitLines
and the actual data. If this is set to true, theLimitLines
are drawn behind the actual data, otherwise on top. Default: false
Limit lines (class LimitLine
) are (as the name might indicate) plain and simple lines can be used to provide additional information for the user.
As an example, your chart might display various blood pressure measurement results the user logged with an application. In order to inform the user that a systolic blood pressure of over 140 mmHg is considered to be a health risk, you could add a LimitLine
at 140 to provide that information.
Example Code
YAxis leftAxis = chart.getAxisLeft(); LimitLine ll = new LimitLine(140f, "Blood Pressure High"); ll.setLineColor(Color.RED); ll.setLineWidth(4f); ll.setTextColor(Color.BLACK); ll.setTextSize(12f); // .. and more styling options leftAxis.addLimitLine(ll);