import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import cm
import matplotlib.colors as colors
from matplotlib.colors import ListedColormap, LinearSegmentedColormap
from mpl_toolkits.axes_grid1.axes_divider import make_axes_locatable
from matplotlib.cm import ScalarMappable
result=[['4', '24', '16','22', '13'],
['13', '41', '25','31', '30'],
['83', '91', '83','98', '60']]
result = np.array(result, dtype=np.int)
"""Se define lo que va a ser el dibujo o el plot"""
fig=plt.figure(figsize=(5, 5), dpi=150)
#First subplot
ax1=fig.add_subplot(111, projection='3d')
xlabels = np.array(['9','12','16a','16b','16c'])
xpos = np.arange(xlabels.shape[0])
ylabels = np.array(['ACN', 'ETOH', 'C-HEX'])
ypos = np.arange(ylabels.shape[0])
xposM, yposM = np.meshgrid(xpos, ypos, copy=False)
zpos=result
zpos = zpos.ravel()
dx=0.5
dy=0.5
dz=zpos
ax1.w_xaxis.set_ticks(xpos + dx/2.)
ax1.w_xaxis.set_ticklabels(xlabels)
ax1.w_yaxis.set_ticks(ypos + dy/2.)
ax1.w_yaxis.set_ticklabels(ylabels)
values = np.linspace(0.1, 1., xposM.ravel().shape[0])
ax1.bar3d(xposM.ravel(), yposM.ravel(), dz*0, dx, dy, dz)
plt.show()
plt.savefig("ICT.png")
所以,问题是我无法在结果中放入翠绿颜色图,而无法在右侧绘制颜色条。谁能帮我? 我通过此代码获得的结果如下: enter image description here
答案 0 :(得分:0)
很好的问题!
有时候,matplotlib文档可能会有些混乱,并且库在3D漂亮绘图中可能不是最大的。在查看了该线程(how to plot gradient fill on the 3d bars in matplotlib)并对代码进行了一些调整之后:
> years
[1] 1976 1980 1983 1985
我设法得到了这个结果:
我想这还不是您所需要的,但是借助内置的自定义功能,您也许可以完成工作。