python - 如何在 matplotlib 中对条形图制作 3d 效果?

标签 python 3d matplotlib bar-chart

我有一个像这样的非常简单的基本条形图 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 的画廊,尝试了一些东西,但我并不幸运,有什么想法吗?谢谢

最佳答案

我当然理解您需要 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. 从 mpl_toolkits.mplot3d 导入 Axes3D

  2. 调用 bar3d 方法(在我的 scriptlet 中,它由 Axes 类的一个实例 ax1 调用)。方法签名:

    bar3d(x, y, z, dy, dz, color='b', zsort="average", *args, **kwargs)

  3. 将附加参数传递给 add_subplot,projection='3d'

alt text

关于python - 如何在 matplotlib 中对条形图制作 3d 效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501771/

相关文章:

python - Plotly-Dash:下拉选项可以工作,但不会绘制数据

python - 如何直接得到两两距离的压缩形式?

opengl - 如何使用 Assimp 加载 Blender 文件?

python - pandas DataFrame 的散点图以 KeyError : 0 结尾

python - Matplotlib - 对数刻度,但需要非对数标签

python - Matplotlib 3D 颜色基于 Z 轴值的点

python - 在 python 中高级处理多个数据帧

python - 每个 subplotSpec 的标题(子图中的子图)

c++ - OpenGL/GLFW 显得透明

c# - 模型的中心Visual3D