我有一组离散密度,比如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安装不是很简单。
任何帮助都是合适的。
答案 0 :(得分:4)
答案 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)