我有一个非常简单的基本条形图像这样
但是我希望显示带有一些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
答案 0 :(得分:11)
我当然理解你需要3d条形图的原因;我怀疑这就是为什么他们被创造出来的原因。
Matplotlib中创建3D绘图所需的库('工具包')是不是第三方库等,而是它们包含在基础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条形图,您只需要做三件事(其他):
从mpl_toolkits.mplot3d导入 Axes3D
调用 bar3d 方法(在我的scriptlet中,它由 ax1 调用,是Axes类的一个实例)。方法签名:
bar3d(x,y,z,dy,dz,color ='b',zsort =“average”,* args,** kwargs)
将附加参数传递给add_subplot, projection ='3d'
答案 1 :(得分:2)
您可以使用mplot3d
解决问题。
答案 2 :(得分:1)
据我所知,Matplotlib没有按设计支持您刚刚提到的“3D”效果等功能。我记得有一段时间读过这篇文章。我不知道它在此期间发生了变化。
有关详细信息,请参阅此discussion thread。
<强>更新强>
看看John Porter的mplot3d模块。这不是标准matplotlib的一部分,而是自定义扩展。从来没有使用它,所以不能说它的用处。