2017-06-22 4 views
0

Ich versuche, mehrere Heatmaps mit matplotlib mit dem gleichen Code zu erstellen. Natürlich sind die Daten für alle diese Heatmaps unterschiedlich. Aus diesem Grund ist die Intensität der Farben über Heatmaps unterschiedlich. Kann ich sicherstellen, dass der Intensitätsbereich gleich bleibt? Alle meine Werte in den Heatmaps liegen zwischen 0 und 1. Also möchte ich die Farbe des Wertes 0.2 in heatmap1 genauso aussehen wie die Farbe des Wertes 0.2 in heatmap2, obwohl beide Heatmaps unterschiedliche Bereiche haben könnten.Generieren mehrerer Heatmaps mit dem gleichen Gradienten

Ich entschuldige mich für die etwas verwirrende Sprache der Frage, aber ich weiß nicht, wie ich es besser erklären soll.

Hier ist der Code, den ich Heatmaps erzeugen bin mit:

from matplotlib import pyplot as plt 

def show_values(pc, fmt="%.2f", **kw): 
    ''' 
    Heatmap with text in each cell with matplotlib's pyplot 
    Source: http://stackoverflow.com/a/25074150/395857 
    By HYRY 
    ''' 
#  from itertools import izip 
    try: 
     # Python 2 
     from itertools import izip 
    except ImportError: 
     # Python 3 
     izip = zip 
    pc.update_scalarmappable() 
    ax = pc.get_axes() 
    for p, color, value in izip(pc.get_paths(), pc.get_facecolors(), pc.get_array()): 
     x, y = p.vertices[:-2, :].mean(0) 
     if np.all(color[:3] > 0.5): 
      color = (0.0, 0.0, 0.0) 
     else: 
      color = (1.0, 1.0, 1.0) 
     ax.text(x, y, fmt % value, ha="center", va="center", color=color, **kw) 


df= pd.read_csv("filepath", header=None) 
fig, ax = plt.subplots(figsize=(20, 10)) 
heatmap = plt.pcolor(df,cmap=matplotlib.cm.Blues) 
ax.set_yticks(np.arange(df.shape[0]) + 0.5, minor=False) 
ax.set_xticks(np.arange(df.shape[1]) + 0.5, minor=False) 
ax.set_xticklabels(xlabels, minor=False, rotation=45) 
ax.set_yticklabels(ylabels, minor=False) 
plt.ylim((0, df.shape[0])) 
plt.gca().invert_yaxis() 
plt.title("plot title") 
show_values(heatmap) 
plt.show() 

Jede Hilfe wäre sehr geschätzt.

Antwort

1

Ihr Minimum und Maximum ermitteln und sie im Code angeben

plt.pcolor(x, y, z, cmap='RdBu', vmin=z_min, vmax=z_max) 

ich dies aus this example gezogen

+0

arbeitete wie ein Charme, vielen Dank. – Patthebug

Verwandte Themen