2017-01-16 4 views
0

Ich habe einige Zeitreihendaten, die ich plotten möchte, und ich möchte Farbskalierung verwenden, um das Alter eines Datenpunkts darzustellen. Ich kann erfolgreich die Farbleiste Arbeits erhalten:Verwendung von Colormap aus Daten in Matplotlib

import matplotlib.pyplot as plt 
import numpy as np 
import pandas as pd 
from matplotlib.dates import date2num 

x = np.random.randint(low=0, high=10, size=10) 
y = np.random.randint(low=0, high=10, size=10) 
dates = pd.date_range("2000-01-01", end="2000-01-10", freq="D") 

df = pd.DataFrame({"x": x, "y": y, "dates": dates}) 

sc = plt.scatter(df["x"], df["y"], c=[date2num(i) for i in df["dates"]]) 
plt.colorbar(sc) 
plt.savefig("dates.png") 

Aber ich verstehe nicht, wie die built in colour maps zu verwenden, wie die einheitlichen Eindruck vermittelt oder sequenzielle Farbkarten. Wie verwende ich eine eingebaute Farbkarte als c beim Aufruf von Scatter?

+1

Fügt '' cmap''-Option zum 'streuen' hinzu, z.B. 'sc = plt.scatter (df [" x "], df [" y "], c = [datum2num (i) für i in df [" daten "], cmap = plt.cm.viridis)' mach was du wollen? Wenn Sie Pre-Matplotlib 1.5 sind dann lesen Sie diese Antwort http://stackoverflow.com/questions/32484453/how-to-use-viridis-in-matplotlib-1-4, um die Perceptually Uniform Sequential colourmaps –

+0

Das hat genau was ich mir erhofft hatte! Vielen Dank! Wenn Sie die Frage mit diesem Kommentar beantworten möchten, akzeptiere ich sie. – mxplusb

+0

Fertig, obwohl ich denke, dass ist wahrscheinlich ein Duplikat von http://stackoverflow.com/questions/6063876/matplotlib-colorbar-for-scatter#6065493 –

Antwort

0

Hinzufügen der cmap Option zum Streuen: sc = plt.scatter(df["x"], df["y"], c=[date2num(i) for i in df["dates"], cmap=plt.cm.viridis). Sie können den Bereich der Farbleiste mit den Argumenten vmin und vmax angeben.

Wenn Sie Pre-Matplotlib 1.5 dann überprüfen Sie this Antwort, um die Perceptually Uniform Sequential Colourmaps zu erhalten.

Verwandte Themen