0

enter image description here

I'm trying to plot four figure labels with two decimal places - e.g '1475.88' onto my X-Axis. As you can see the label has been shorted by Matplotlib to the scientific format 1.478e3.

How do I display the full figure, and at a defined spacing.

Code below:

with plt.style.context('seaborn-whitegrid'):

    # Plot the SVP data
    plt.figure(figsize=(8, 8))
    plt.plot(speed_x_clean, depth_y_clean)
    plt.plot(smoothed_speed, smoothed_depth)
    plt.scatter(float(speed_extrapolated), float(depth_extrapolated),marker='X', color='#ff007f')

    # Add a legend, labels and titla
    plt.gca().invert_yaxis()
    plt.legend(('Raw SVP', 'Smoothed SVP'), loc='best')
    plt.title('SVP - ROV '+ '['+ time_now + ']')
    plt.xlabel('Sound Velocity [m/s]')
    plt.ylabel('Depth [m]')

    # plt.grid(color='grey', linestyle='--', linewidth=0.25, grid_animated=True)
    ax = plt.axes()
    plt.gca().xaxis.set_major_locator(plt.AutoLocator())
    plt.xticks(rotation=0)

    plt.show()
0

1 Answer 1

1

Labels with two Decimal Places

Using a ticker FuncFormatter any user defined format can be achieved.

@ticker.FuncFormatter
def major_formatter(val, pos):
    return "%.2f" % val

Labels at a Defined Spacing

With set_xticks and set_yticks the number of labels can be set at a defined spacing.

Self-Contained Example

A completely self-contained example could look like this (simple sine wave):

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.ticker as ticker


@ticker.FuncFormatter
def major_formatter(val, pos):
    return "%.2f" % val


def graph():
    x = np.arange(0.0, 1501, 50)
    y = np.sin(2 * np.pi * x / 1500)

    fig, ax = plt.subplots()
    ax.plot(x, y)

    ax.xaxis.set_major_formatter(major_formatter)
    ax.yaxis.set_major_formatter(major_formatter)

    x_ticks = np.arange(0, 1501, 500)
    y_ticks = np.arange(-1.0, +1.01, 0.5)

    ax.set_xticks(x_ticks)
    ax.set_yticks(y_ticks)

    ax.grid(which='both')

    plt.show()


if __name__ == '__main__':
    graph()

Output

Here the output of the example program: it has four figure labels with two decimal places on the x-axis:

screen shot

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.