6

我需要以各种形式绘制一些数据。目前我正在使用Matplotlib,我对能够制作的图相当满意。

这个问题是关于如何绘制最后一个。数据类似于“距离表”,像这样(更大,我的表是 128x128,每个元素仍然有 3 个或更多数字)。

现在,我的数据比距离表“结构化”要好得多(我的数据不会像按字母顺序排序的距离表那样“随机”变化),因此 3D条形图,或者其中的 3 个,将是完美的。我的理解是 Matplotlib 中缺少这样的图表。

我可以使用像这样的(彩色)Countor3d像 imshow 这样的 2D 东西,但它并不能很好地代表数据是什么(数据仅在我的 128 点中有意义,两点之间没有任何东西) . 条形的高度比颜色更易读,IMO。

因此问题:

  1. 是否可以在 Matplotlib 中创建 3D 条形图?应该清楚的是,我的意思是使用 2D 域,而不仅仅是出于美学目的而带有“假”3D 渲染的 2D 条形图
  2. 如果上一个问题的答案是否定的,那么是否有其他图书馆能够做到这一点?我非常喜欢基于 Python 的东西,但我对其他 Linux 友好的可能性表示满意
  3. 如果上一个问题的答案是否定的,那么您对如何显示该数据有什么建议吗?例如,创建一个包含值的表,叠加到 imshow 或其他彩色方式?
4

5 回答 5

7

一段时间以来,matplotlib 没有 3D 支持,但最近又重新添加了。您将需要使用 svn 版本,因为此后没有发布任何版本,并且文档有点稀疏(请参阅示例/mplot3d/demo.py)。我不知道 mplot3d 是否支持真正的 3D 条形图,但其中一个演示看起来有点像可以扩展到类似的东西。

编辑:演示的源代码在示例中,但由于某种原因结果不是。我的意思是test_polys函数,它是这样的:

示例图 http://www.iki.fi/jks/tmp/poly3d.png

test_bar2D功能会更好,但在演示中已将其注释掉,因为它会导致当前 svn 版本出错。可能是一些微不足道的问题,或者更难解决的问题。

于 2009-05-09T16:56:07.617 回答
5

MyavaVi2可以制作3D 条形图(向下滚动一点)。一旦你有了MayaVi / VTK / ETS /etc。安装它一切都很好,但安装它可能需要一些工作。Ubuntu 已将其全部打包,但它们是我所知道的唯一一个这样做的 Linux 发行版。

于 2009-05-09T16:10:51.140 回答
5

另一种可能性是 Gnuplot,它可以绘制某种伪 3D 条形图,并且gnuplot.py允许从 Python 连接到 Gnuplot。不过,我自己还没有尝试过。

于 2009-05-12T11:50:19.637 回答
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()      

http://i8.tietuku.com/ea79b55837914ab2.png

于 2016-01-20T08:19:08.323 回答
0

您可以查看 Chart Director:

http://www.advsofteng.com

它有各种各样的图表和图形,并有一个很好的 Python(和其他几种语言)API。

有两个版本:免费版在生成的图像上添加了简介,付费版的价格相当合理。

这是看起来更有趣的 3d 堆叠条形图之一:

示例图
(来源:advsofteng.com

于 2009-05-10T22:09:16.933 回答