2011-11-17 16 views
6

Qualcuno sa come modificare la larghezza di riga di una singola riga come una funzione di x in matplotlib? Ad esempio, come si può rendere una linea sottile per valori piccoli di x e spesso per valori grandi di x?Come si modifica la larghezza di riga di una singola riga come una funzione di x in matplotlib?

+0

Può chiarire ciò che si vuole: Dove vuoi che la linea per iniziare e finire? È solo una linea verticale? Inoltre, che cosa hai provato finora, con cosa stai avendo problemi? – Yann

+0

L'idea di base è che ho una matrice di valori x, una matrice di valori y e una matrice di ciò che voglio che la larghezza di riga sia in ogni punto. Il problema è quando si traccia una riga con la parola chiave larghezza linea che prende un solo numero. Non riesco a trovare alcun modo per farlo prendere una serie di valori. – cmk24

risposta

8

Fondamentalmente, è necessario utilizzare un poligono anziché una linea. Come un rapido esempio:

import numpy as np 
import matplotlib.pyplot as plt 

# Make the original line... 
x = np.linspace(0, 10, 100) 
y = 2 * x 
thickness = 0.5 * np.abs(np.sin(x) * np.cos(x)) 

plt.fill_between(x, y - thickness, y + thickness, color='blue') 
plt.show() 

enter image description here

Oppure, se volete qualcosa di più vicino alla descrizione:

import numpy as np 
import matplotlib.pyplot as plt 

# Make the original line... 
x = np.linspace(0, 10, 100) 
y = np.cos(x) 
thickness = 0.01 * x 

plt.fill_between(x, y - thickness, y + thickness, color='blue') 
plt.show() 

Problemi correlati