matplotlib: comment changer la couleur des points de données en fonction d'une variable
J'ai 2 variables (x,y) qui changent avec le temps (t). Je veux tracer x vs. t et colorer les tiques en fonction de la valeur de Y. Par exemple, pour les valeurs les plus élevées de y, la couleur de la tique est vert foncé, pour la valeur la plus basse est Rouge foncé, et pour les valeurs intermédiaires, la couleur sera mise à l'échelle entre le vert et le rouge.
Cela Peut-il être fait avec matplotlib en python?
43
demandé sur
Eric Leschinski
2011-10-25 01:08:04
2 réponses
C'est à quoi sert matplotlib.pyplot.scatter
.
Comme exemple rapide:
import matplotlib.pyplot as plt
import numpy as np
# Generate data...
t = np.linspace(0, 2 * np.pi, 20)
x = np.sin(t)
y = np.cos(t)
plt.scatter(t,x,c=y)
plt.show()
66
répondu
Joe Kington
2011-10-24 21:51:22
Si vous voulez tracer des lignes au lieu de points, consultez cet exemple , modifié ici pour tracer des points bons/mauvais représentant une fonction en noir/rouge selon le cas:
def plot(xx, yy, good):
"""Plot data
Good parts are plotted as black, bad parts as red.
Parameters
----------
xx, yy : 1D arrays
Data to plot.
good : `numpy.ndarray`, boolean
Boolean array indicating if point is good.
"""
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
from matplotlib.colors import from_levels_and_colors
from matplotlib.collections import LineCollection
cmap, norm = from_levels_and_colors([0.0, 0.5, 1.5], ['red', 'black'])
points = np.array([xx, yy]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
lines = LineCollection(segments, cmap=cmap, norm=norm)
lines.set_array(good.astype(int))
ax.add_collection(lines)
plt.show()
1
répondu
Paul Price
2018-04-26 20:44:50