Je proposerais de séparer les graphes, pour qu'ils aient chacun leur échelle.
Avec 2 axes, voilà le code :
import numpy as np
import matplotlib.pyplot as plt
c1,c2,c3=np.array([0,400],dtype=float),np.array([300,12500],dtype=float),np.array([20,45],dtype=float)
mb1,mb2,mb3=np.array([0,18],dtype=float),np.array([0,12.2],dtype=float),np.array([0,1.4],dtype=float)
# couleurs pour différencier les variables et les échelles
color1= 'red'
color2='blue'
color3='green'
fig = plt.figure()
ax1 = fig.add_subplot(111)
# le premier 'ax' contiendra les variables Process 1 et Process 3
g1, = ax1.plot(mb1,c1,'s-',markerfacecolor='white',label="Process 1 ",color=color1)
plt.xticks(mb1, mb1, color='k')
plt.yticks(color=color1)
ax1.set_ylabel("Process 1 et 3", color=color1)
ax1.plot(mb3,c3,'s-',markerfacecolor='white',label="Process 3",color=color3)
# ax2 partage le même axe des abscisses que ax1, mais aura sa propre échelle d'ordonnées
ax2=plt.twinx()
ax2.plot(mb2,c2,'s-',markerfacecolor='white',label="Process 2 ",color=color2)
ax2.set_ylabel("Process 2", color=color2)
plt.yticks(color=color2)
fig.legend(loc="upper right") # pour rassembler toutes les légendes en une seule
plt.show()