我有一个非常简单的基本酒吧的图形alt text

但是我想显示一些3D效果的条形alt text

我只希望栏具有3D效果...我的代码是:

fig = Figure(figsize=(4.6,4))
ax1 = fig.add_subplot(111,ylabel="Valeur",xlabel="Code",autoscale_on=True)

width = 0.35
ind = np.arange(len(values))
rects = ax1.bar(ind, values, width, color='#A1B214')
ax1.set_xticks(ind+width)
ax1.set_xticklabels( codes )
ax1.set_ybound(-1,values[0] * 1.1)
canvas = FigureCanvas(fig)
response = HttpResponse(content_type='image/png')
canvas.print_png(response)

我一直在Matplotlib的画廊里看,尝试了一些事情,但是我不幸运,有什么想法吗? Thxs

有帮助吗?

解决方案

据我所知Matplotlib没有 设计 您刚才提到的“ 3D”效果之类的支持功能。我记得有一段时间读过这篇文章。一世 不知道与此同时发生了变化.

看到这个 讨论线程 更多细节。

更新

看看约翰·波特的 mplot3d 模块。这不是标准matplotlib的一部分,而是自定义扩展。我自己从来没有使用过它,所以不能说太多关于它的用处。

其他提示

我当然理解您需要3D栏图的原因;我怀疑这就是为什么它们被创造的原因。

创建3D图所需的matplotlib中的库(“工具包”)是 不是 第三方图书馆等,而是 包含在Matplotlib安装中. 。 (对于当前的稳定版本(即1.0)是正确的,尽管我不认为这是0.98,因此在过去一年中,基本安装的一部分“插件”的变化 - 我相信)

所以你在这里:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as PLT
import numpy as NP

fig = PLT.figure()
ax1 = fig.add_subplot(111, projection='3d')

xpos = NP.random.randint(1, 10, 10)
ypos = NP.random.randint(1, 10, 10)
num_elements = 10
zpos = NP.zeros(num_elements)
dx = NP.ones(10)
dy = NP.ones(10)
dz = NP.random.randint(1, 5, 10)

ax1.bar3d(xpos, ypos, zpos, dx, dy, dz, color='#8E4585')
PLT.show()

要在Maplotlib中创建3D栏,您只需要做三(附加)的事情:

  1. 进口 axes3d 来自mpl_toolkits.mplot3d

  2. 致电 BAR3D 方法(在我的脚本中,它被称为 AX1 轴类的实例)。方法签名:

    bar3d(x,y,z,dy,dz,color ='b',zsort =“平均”, *args,** kwargs)

  3. 将其他参数传递给add_subplot, 投影='3D'

alt text

您也许可以解决一些问题 mplot3d.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top