Increasing the space between the plot and the title with matplotlib

Question:

I am using the following script to generate some plots. The problem is sometimes the scientific notation is overlapping with the title.

Is there a way to fix this like moving the plot a little bit down?

    # init
    u = {}
    o = {}

    # create figure
    fig = plt.figure()

    # x-Axis (timesteps)
    i = np.array(i)

    for key in urbs_values.keys():
        # y-Axis (values)
        u[key] = np.array(urbs_values[key])
        o[key] = np.array(oemof_values[key])

        # draw plots
        plt.plot(i, u[key], label='urbs_'+str(key), linestyle='None', marker='x')
        plt.ticklabel_format(axis='y', style='sci', scilimits=(0, 0))
        plt.plot(i, o[key], label='oemof_'+str(key), linestyle='None', marker='.')
        plt.ticklabel_format(axis='y', style='sci', scilimits=(0, 0))

    # plot specs
    plt.xlabel('Timesteps [h]')
    plt.ylabel('Flow [MWh]')
    plt.title(site+' '+name)
    plt.grid(True)
    plt.tight_layout(rect=[0,0,0.7,1])
    plt.legend(bbox_to_anchor=(1.025, 1), loc=2, borderaxespad=0)
    # plt.show()

Example:
enter image description here

Asked By: oakca

||

Answers:

You can change the position of the title by providing a value for the y parameter in plt.title(...), e.g., plt.title(site+' '+name, y=1.1).

Answered By: Guybrush

You can edit the tittle position this way:

# plot specs
plt.xlabel('Timesteps [h]')
plt.ylabel('Flow [MWh]')
plt.title(site+' '+name)
ttl = plt.title
ttl.set_position([.5, 1.02])
plt.grid(True)
plt.tight_layout(rect=[0,0,0.7,1])
plt.legend(bbox_to_anchor=(1.025, 1), loc=2, borderaxespad=0)
# plt.show()

tuning the ‘1.02’ should do the trick

Answered By: HerickC

An alternative and simple solution is just to add a newline character ‘n’ to the title.

plt.title("Title here and then n")
Answered By: appleslice
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.