2011-03-31 211 views
16

example的Matplotlib文檔頁面上借用並稍微修改代碼,Matplotlib三維散點圖用彩條

import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 

def randrange(n, vmin, vmax): 
    return (vmax-vmin)*np.random.rand(n) + vmin 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
n = 100 
for c, m, zl, zh in [('r', 'o', -50, -25), ('b', '^', -30, -5)]: 
    xs = randrange(n, 23, 32) 
    ys = randrange(n, 0, 100) 
    zs = randrange(n, zl, zh) 
    cs = randrange(n, 0, 100) 
    ax.scatter(xs, ys, zs, c=cs, marker=m) 
ax.set_xlabel('X Label') 
ax.set_ylabel('Y Label') 
ax.set_zlabel('Z Label') 

plt.show() 

將給予不同顏色的3D散點圖每個點(顏色隨機在這個例子中) 。什麼是正確的方式來添加一個彩條到數字,因爲在plt.colorbar()ax.colorbar()似乎並沒有工作。

回答

14

這將產生一個彩條(儘管可能不是一個需要):

替換此行:

ax.scatter(xs, ys, zs, c=cs, marker=m) 

p = ax.scatter(xs, ys, zs, c=cs, marker=m) 

然後用

fig.colorbar(p) 

在附近e結尾