def get_readable_tick_labels(plt, ticklabel_type, axis):
    """Get more readable tick labels, e.g. 50k for 50000.

    Parameters
    ----------

    plt : matplotlib.pyplot
        Plot from which to get axes.

    ticklabel_type : {'', 'm', 'k' or '%'}, default=None
        Label type for ticklabel (y-axis or x-axis).

    axis : {'y', 'x'}
        For which axis to update the labels.

    Return
    ---------

    labels : list
        Updated tick labels for x or y axis.

    ax : plt.gca
        Current axes for plt.

    division_int : int
        By which number to divide values to match new tick labels.

    division_type : str
        Same as ticklabel_type, except for None (--> ""),
        representing string to display after updated tick values."""

    # Depending on ticklabel adjust display of numbers
    # e.g. (50000 --> 50k)

    # 1000 --> k
    if ticklabel_type == "k":
        division_type = "k"
        division_int = 1000

    # 1000000 --> m
    elif ticklabel_type == "m":
        division_type = "m"
        division_int = 1000000

    # "" or None --> ""
    elif ticklabel_type == "" or ticklabel_type is None:
        division_type = ""
        division_int = 1

    # % --> %
    elif ticklabel_type == "%":
        division_type = "%"
        division_int = 1

    else:
        raise IOError("Invalid value: ticklabel has to be '', 'm', 'k' or '%'")

    # Get axis and ticks
    ax = plt.gca()

    if axis == "y":
        ticks = ax.get_yticks()
    else:
        ticks = ax.get_xticks()

    # Get updated tick labels
    labels = ["{:.0f}".format(x / division_int) + division_type for x in ticks]

    return labels, ax, division_int, division_type