2011-07-26 54 views
3

2D直方圖我試圖使用這些代碼與Python

from math import * 
import pylab as p 
import matplotlib.pyplot as plt 
import numpy as np 

x=part.points[:,0] 
y=part.points[:,1] 
z=part.points[:,2] 

H, xedges, yedges = np.histogram2d(x, y, bins=(128,128)) 
H.shape, xedges.shape, yedges.shape 

extent = [yedges[0], yedges[-1], xedges[-1], xedges[0]] 

plt.imshow(H, extent=extent, interpolation='nearest') 

plt.colorbar() 
plt.xlabel("x") 
plt.ylabel("y") 
plt.show() 

每一件事工作正常繪製Python中的2D直方圖:我有一個彩條代表在每個細胞計數。問題是我想要計數的日誌,但函數histrogram2d沒有任何選項。

回答

5

我想,你可以簡單地做

H_log = np.log(H) 
… 
plt.imshow(H_log,…) 

(假設你沒有空計數)。

如果您想改爲3D條形圖,則可以調整Matplotlib文檔中提供的example

更一般地說,我衷心推薦您在查找某些特定的圖形功能時檢查非常有用的Matplotlib gallery

+0

謝謝,我真的是新的Python。我可以問你是否有可能有一個3d直方圖?還包括z座標? – Brian

+0

@Matteo:我添加了關於如何創建「3D直方圖」的註釋。如果回答您的原始問題,請將此答案標記爲已接受(在左側)。 :) – EOL

3

In this answer有一個二維和三維散點圖和氣泡直方圖的解決方案。

points, sub = hist2d_scatter(radius, density, bins=4) 

points, sub = hist3d_scatter(temperature, density, radius, bins=4) 

submatplotlib"Subplot"實例(3D與否)和points包含用於散點圖的點。 enter image description here