我需要以各种形式绘制一些数据。目前我正在使用Matplotlib,我对我能够制作的情节非常满意。
这个问题是如何绘制最后一个。数据类似于“距离表”,如this(只是更大,我的表格是128x128,每个元素的数量仍然是3或更多)。
现在,我的数据比距离表更好“结构化”(我的数据不会像按字母顺序排序的距离表那样“随机”变化),因此是3D barchart,或者其中3个, 将会是完美的。我的理解是Matplotlib中缺少这样的图表。
我可以使用像these这样的(有色)Countor3d或像2D这样的2D中的东西,但它并不能很好地代表数据是什么(数据在我的128分中有意义,有没有两点之间的任何事情。并且酒吧的高度比颜色更可读,IMO。
因此问题:
答案 0 :(得分:7)
现在有一段时间了,matplotlib没有3D支持,但已添加回recently。您将需要使用svn版本,因为之后没有发布,文档有点稀疏(参见examples / mplot3d / demo.py)。我不知道mplot3d是否支持真正的3D条形图,但其中一个演示看起来有点像它可以扩展到类似的东西。
编辑:演示的源代码在the examples,但由于某种原因,结果不是。我的意思是test_polys
函数,这是它的样子:
example figure http://www.iki.fi/jks/tmp/poly3d.png
test_bar2D
函数会更好,但它在演示中被注释掉,因为它会导致当前svn版本出错。可能是一些微不足道的问题,或者更难修复的问题。
答案 1 :(得分:5)
MyavaVi2可以3D barcharts(向下滚动一下)。获得MayaVi / VTK / ETS /等后。安装它所有工作都很漂亮,但它可以是一些工作,让它全部安装。 Ubuntu已经打包了所有内容,但它们是我所知道的唯一的Linux发行版。
答案 2 :(得分:5)
另一种可能性是Gnuplot,它可以绘制某种pseudo 3D bar charts,而gnuplot.py允许从Python接口到Gnuplot。不过,我自己也没试过。
答案 3 :(得分:1)
这是我使用matplotlib的简单Bar-3d的代码。
import mpl_toolkits
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
%matplotlib inline
## The value you want to plot
zval=[0.020752244,0.078514652,0.170302899,0.29543857,0.45358061,0.021255922,0.079022499,\
0.171294169,0.29749654,0.457114286,0.020009631,0.073154019,0.158043498,0.273889264,0.419618287]
fig = plt.figure(figsize=(12,9))
ax = fig.add_subplot(111,projection='3d')
col=["#ccebc5","#b3cde3","#fbb4ae"]*5
xpos=[1,2,3]*5
ypos=range(1,6,1)*5
zpos=[0]*15
dx=[0.4]*15
dy=[0.5]*15
dz=zval
for i in range(0,15,1):
ax.bar3d(ypos[i], xpos[i], zpos[i], dx[i], dy[i], dz[i],
color=col[i],alpha=0.75)
ax.view_init(azim=120)
plt.show()
答案 4 :(得分:0)
您可以查看图表总监:
它有各种各样的图表和图表,并且有一个很好的Python(以及其他几种语言)API。
有两个版本:免费版本对生成的图像进行了模糊处理 付费版的价格相当合理。
这是一个看起来更有趣的3D堆积条形图:
(来源:advsofteng.com)