2014-09-17 2 views
3

J'ai un peu de difficulté. Je voudrais ombre dans la région où les points de données noires se trouvent dans la figure suivante (ignorer les histogrammes):Hachure de région entre deux fonctions définies dans matplotlib

enter image description here

Les deux fonctions sont les suivantes:

courbe noire solide:

def log_OIII_Hb_OII(log_OII_Hb, eps=0): 
    return eps + ((0.11)/(log_OII_Hb - eps -0.92)) + 0.85 

ligne linéaire pointillé:

def LINERlog_OIII_Hb_OII(log_OII_Hb, eps=0): 
    return 0.95*(log_OII_Hb)-0.4 

Je suis familier avec axScatter.fill_between, mais je ne suis pas sûr de la meilleure façon de nuancer dans la région susmentionnée. Les suggestions sont les bienvenues. J'ai également défini des np.linspaces pour les deux fonctions, mais je suis sûr que l'ombre peut être fait avec:

np.linspace(-0.5, 2.0). 
+1

Je suppose que vous allez vouloir utiliser écrêtage. – tacaswell

+0

Plus que probablement. –

Répondre

1

Vous pouvez utiliser fill_between pour cela. Voici il est appliqué à l'éclosion d'une région entre sin(a) et cos(a):

enter image description here

code:

#!/usr/bin/python3 

from numpy import * 
from matplotlib import pyplot as plt 

a = linspace(0, 6.28, 100) 

x = sin(a) 
y = cos(a) 

fig = plt.figure() 
ax = fig.add_subplot(111) 

ax.plot(a, x, "k-", lw=3) 
ax.plot(a, y, "k-", lw=3) 

ax.fill_between(a, x, y, hatch = '///') 

fig.savefig("mwe.png") 
+0

Merci pour votre réponse Adobe, alors comment l'appliquer à mes fonctions? Je peux générer des valeurs x avec np.linspace = x afin que je puisse faire quelque chose comme a, f (x), f (y). Savez-vous précisément comment faire éclore ma région? J'ai essayé beaucoup de choses différentes! –

+0

@MichaelRoberts: [MWE] (http://stackoverflow.com/help/mcve) s'il vous plaît. – Adobe

Questions connexes