现在有一些统计数据绘制在3d条(x,y)上。每个条的高度代表(x,y)平面的正方形网格中的点的密度。现在,我可以在每个条上放置不同的颜色。但是,我想在3d条上放置渐进的颜色,类似于cmap,所以条将根据密度进行渐变填充。
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# height of the bars
z = np.ones((4, 4)) * np.arange(4)
# position of the bars
xpos, ypos = np.meshgrid(np.arange(4), np.arange(4))
xpos = xpos.flatten('F')
ypos = ypos.flatten('F')
zpos = np.zeros_like(xpos)
dx = 0.5 * np.ones_like(zpos)
dy = dx.copy()
dz = z.flatten()
ax.bar3d(xpos, ypos, zpos, dx, dy, dz, color='b', zsort='average')
plt.show()
字符串
输出上面的代码:
的数据
1条答案
按热度按时间hgncfbus1#
让我先说一下,当涉及到复杂的3D绘图时,matplotlib可能不是首选工具。
也就是说,没有内置的方法来生成在条形图的范围内具有不同颜色的条形图。
因此,我们需要以某种方式模仿条形图。下面可以找到一个可能的解决方案。在这里,我们使用
plot_surface
图来创建一个包含梯度的条形图。的数据
字符串