Can't see the forest for the keys
Python 2, 165 bytes

a=input()
l=max(map(abs,a))
while l+2:s=' _'[l&lt;0];print(s+s.join((([' ^ ','//| \\\\'[x&gt;0::2],'   '][cmp(abs(x),l)],'_|_')[l&lt;0],s*3)[x==0]for x in a)+s).rstrip();l-=1


This is a full program that accepts a list as input. I'm still golfing this horrid mess.