2014-09-25 2 views
1

그림과 같이 일부 2D 데이터를 플로팅합니다. 축 측면이 같아야하고 축 범위가 달라야합니다.Matplotlib : 플롯의 색상 막대와 동일한 높이

import numpy 
import matplotlib.pyplot as plt 
import matplotlib.mlab as mlab 

#Generate data 
delta = 0.025 

x = numpy.arange(-5.0, 5.0, delta) 
y = numpy.arange(-5.0, 5.0, delta) 

X, Y = numpy.meshgrid(x, y) 

Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) 
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1) 
# difference of Gaussians 
Z = 10.0 * (Z2 - Z1) 

#Plot 
fig = plt.figure() 
ax1 = fig.add_subplot(1, 1, 1, aspect='equal') 

PC = ax1.pcolor(X, Y, Z) 
CF = ax1.contour(X, Y, Z, 50, colors = "black") 

plt.xlim(-4.0, 4.0) 
plt.ylim(-2.0, 2.0) 

cbar = plt.colorbar(PC) 
cbar.add_lines(CF) 

plt.show() 

enter image description here

은 어떻게 colobar는 플롯 데이터와 동일한 높이가 할 수 있습니까?

답변

3

당신은 make_axes_locatable를 사용하여이 작업을 수행 할 수 있습니다

import numpy 
import matplotlib.pyplot as plt 
import matplotlib.mlab as mlab 
from mpl_toolkits.axes_grid1 import make_axes_locatable 

#Generate data 
delta = 0.025 

x = numpy.arange(-5.0, 5.0, delta) 
y = numpy.arange(-5.0, 5.0, delta) 

X, Y = numpy.meshgrid(x, y) 

Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) 
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1) 
# difference of Gaussians 
Z = 10.0 * (Z2 - Z1) 

#Plot 
fig = plt.figure() 
ax1 = fig.add_subplot(1, 1, 1, aspect='equal') 

PC = ax1.pcolor(X, Y, Z) 
CF = ax1.contour(X, Y, Z, 50, colors = "black") 

plt.xlim(-4.0, 4.0) 
plt.ylim(-2.0, 2.0) 

divider = make_axes_locatable(ax1) 
cax1 = divider.append_axes("right", size="5%", pad=0.05) 

cbar = plt.colorbar(PC, cax = cax1) 
cbar.add_lines(CF) 

plt.show() 

enter image description here

+0

이는 GeoAxes로 예상 축에 대해 작동하지 않습니다, divider.append_axes에()를 호출하면 예외가 발생합니다. Fro 일반 축이 작동합니다. – Bogdan

관련 문제