我想与plot()
添加一行与imshow()
在matplotlib, 其中多个不同尺寸的子图被认为制造的彩色地图。当添加一条线, 颜色映射以某种方式更改大小。我如何解决这个问题?避免变化()来imshow()
这是说明问题的一个简单的例子:
import scipy.stats as stat
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
fig = plt.figure(figsize=(12, 4))
plt.axes([.05,.1,.4,.8])
data = stat.uniform.rvs(size=2400).reshape((40,60))
plt.imshow(data,cmap=cm.jet,vmin=0,vmax=1)
plt.colorbar(fraction=.03)
plt.plot(range(60),20*np.ones(60),'w-',lw=3) # <-- causing problems
plt.title('the damn white line')
在绘图之前禁用自动缩放或将其设置为“紧”,请参阅: http://stackoverflow.com/questions/16157180/how-to-remove-padding-border-in-a-matplotlib-subplot -solved/16162912#16162912 – 2013-05-10 07:12:56
正如@RutgerKassies所提到的,你可以用命令'plt.autoscale(False)'来避免这种情况。另外,在我看来,使用'plt.axhline(y = 20,c ='w',lw = 3)'而不是'plt.plot(range(60),20 * np)会是更好的解决方案。 (60),'w - ',lw = 3)',因为['axhline'](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.axhline)跨越整个水平范围轴,即使您平移/放大图。 – hooy 2013-05-10 10:45:17
@nordev您应该将其作为回答发布 – tacaswell 2013-05-10 14:04:00