在Matlab,matplotlib或gnuplot中用3D绘制密度矩阵

时间:2014-02-13 14:41:37

标签: matlab matplotlib gnuplot

我有一组离散密度,比如n(i,j),我想绘制一个三维条形图。我的目标是以下链接中的一些数字:

http://qutip.blogspot.de/2012/07/quantum-process-tomography.html

http://qutip.org/docs/2.2.0/guide/guide-visualization.html#visualizing-operators

我想直接使用Matlab,matploblib或gnuplot,而不是使用qutip工具箱,特别是因为qutip安装不是很简单。

任何帮助都是合适的。

2 个答案:

答案 0 :(得分:4)

在Matlab中,您可以使用bar3

n = rand(4,5); %// example data
bar3(n)

另请参阅view以更改3D绘图的视角。

enter image description here

答案 1 :(得分:4)

在matplotlib中,您可以使用bar3d。请参阅example in the gallery,但您需要适当设置color参数以获得每个条形的不同颜色 - 请参阅API docs

修改

鉴于评论,以下代码生成输出而不引用直方图:

x = np.array(range(0, 6), float) # I assume that np.loadtxt will give you (from the
y = x.copy()                     # comment) x,y as a 1d array in the form that this
xpos, ypos = np.meshgrid(x, y)   # script would after the xpos.flatten() lines.
z = np.random.rand(6, 6)         #
colors = ['b', 'g', 'y', 'r', 'k', 'c']*6 # This colors the bars individually
xpos = xpos.flatten()
ypos = ypos.flatten()
zpos = np.zeros_like(xpos)
dx = 0.5 * np.ones_like(zpos)
dy = dx.copy()
dz = z.flatten() # This is the actual data.
fig = plt.figure()
ax = fig.add_subplot(111,projection = '3d')
ax.bar3d(xpos, ypos, zpos, dx, dy, dz, color=colors)