2016-04-08 4 views
0

I zwei Nebenhandlungen in einer Figur ziehen möchte, der eine ein einfaches Liniendiagramm ist y f (x) = und der andere ein 2D heatmap, like the one shown here.Python Nebenhandlungen enthält Zeilengraphen und Heatmaps

Aber ich möchte eine Farbleiste zum zweiten Diagramm hinzufügen. Der Code, den ich benutze, ist:

from pylab import* 

fig = figure() 
sub1 = fig.add_subplot(121) 
sub2 = fig.add_subplot(122) 

x=linspace(0,10,200) 
y=exp(x) 
sub1.plot(x,y) 

x=linspace(-10,10,200) 
y=linspace(-10,10,200) 
xx,yy=meshgrid(x,y) 
z=sin(xx)+cos(yy) 
sub2.imshow(z) 
sub2.colorbar() 

show() 

Aber das gibt eine Fehlermeldung

Traceback (most recent call last): 
File "ques2.py", line 16, in <module> 
    sub2.colorbar() 
AttributeError: 'AxesSubplot' object has no attribute 'colorbar' 

Was kann ich tun?

Und die Ausgabe des erhaltenen Programms, ohne manuell die subplot is shown here Parameter anpassen. Die beiden Grundstücke haben sehr unterschiedliche Größen. Gibt es eine Möglichkeit, die erforderliche Größe von Subplot-Bildern im Programm selbst zu erwähnen?

Antwort

0

Beim Hinzufügen von Farbbalken ist es üblich, dem Bild, das von imshow zurückgegeben wird, eine Variable zuzuweisen, z. B. img = sub2.imshow(z), die unten verwendet wird. Dann können Sie Ihrem Bild eine Farbleiste hinzufügen, indem Sie plt.colorbar das Bild und die Achse für die Farbleiste angeben (in Ihrem Fall plt.colorbar(img, ax=sub2).

import numpy as np 
import matplotlib.pyplot as plt 

fig = plt.figure() 
sub1 = fig.add_subplot(121) 
sub2 = fig.add_subplot(122) 

x = np.linspace(0,10,200) 
y = np.exp(x) 
sub1.plot(x,y) 

x = np.linspace(-10,10,200) 
y = np.linspace(-10,10,200) 
xx, yy = np.meshgrid(x,y) 
z = np.sin(xx)+np.cos(yy) 

img = sub2.imshow(z) 
plt.colorbar(img, ax=sub2) 

Wie für die Größe Ihrer Nebenhandlung ändern kann, finden this post.

+0

Gibt es eine Möglichkeit, die Farbleiste dünner zu machen? Weil ich denke, dass es viel Platz verbraucht. – kanayamalakar

+0

colorbar hat eine schöne Gruppe von Parametern zum Anpassen der Größe: Fraktion, Schrumpfung und Aspekt. Weitere Informationen finden Sie in [colorbar.make_axes()] (http://matplotlib.org/api/colorbar_api.html#matplotlib.colorbar.make_axes). Optimieren Sie diese Parameter grundsätzlich so lange, bis Sie zufrieden sind. Die anderen in der Tabelle aufgeführten Parameter dienen zum Anpassen der Position/Orientierung. – lanery

Verwandte Themen