Kneves
Kneves

Reputation: 33

Add multiples graphs in one figure

I'm learning Python using Jupiter and I'm struggling trying to put the graphs into one figure. Here's what I have so far...

Code for my graphs(I have three of graphs, they only differ in color and lines vs. dot):

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

one = plt.figure()
plt.plot(x_v, y_v, '#008000') #change color using hex strings 
plt.xlabel('x')
plt.ylabel('y')
plt.show()
    
two = plt.figure()
plt.plot(x_v, y_v, linestyle='none', marker='o', markersize=0.5)
plt.show()

three = plt.figure()
plt.plot(x_v, y_v, linestyle='none', marker='o', markersize=0.5, color = 'yellow')
plt.show()

Here's code that I have so far to make it one figure... I was wondering If I should should put it in a np.arange and plot it, but I can't seem to get it to work....

def f(x):
    return one

def g(x):
    return two

def h(x):
    return three

If anyone can help, it'll be of great use! Thank you!

Upvotes: 3

Views: 653

Answers (2)

Grayrigel
Grayrigel

Reputation: 3594

Here is one way to approach multiple plots with plt.subplots. I think it is very easy to follow and also gives a lot of control over individual plots:

import numpy as np
import matplotlib.pyplot as plt

#generating test data
x = np.arange(0,9)
y = np.arange(1,10)

#defining figure layout (i.e. rows, columns, size, horizontal and vertical space between subplots
fig,ax = plt.subplots(nrows=2,ncols=2,figsize=(15,7))
plt.subplots_adjust(hspace=0.4,wspace=0.2)

#first subplot (numbering can be read as 1st plot in a grid of 2x2)
plt.subplot(2,2,1)
plt.plot(x,y)

#second subplot in a grid of 2x2
plt.subplot(2,2,2)
plt.plot(x,y,ls='--')

#third subplot in a grid of 2x2
plt.subplot(2,2,3)
plt.scatter(x,y)

#fourth subplot in a grid of 2x2
plt.subplot(2,2,4)
plt.plot(x,y)


plt.tight_layout()
plt.show()

Output:

enter image description here

Upvotes: 1

Maksim Terpilovskii
Maksim Terpilovskii

Reputation: 851

You can use plt.subplots:

fig, (ax1, ax2, ax3) = plt.subplots(figsize=(15, 5), ncols=3)
ax1.plot(x_v, y_v, '#008000')
ax1.set_xlabel('x')
ax1.set_ylabel('y')

ax2.plot(x_v, y_v, linestyle='none', marker='o', markersize=0.5)

ax3.plot(x_v, y_v, linestyle='none', marker='o', markersize=0.5, color = 'yellow')

Upvotes: 2

Related Questions