從bar3d docs,所施加的顏色是每個面,
顏色可以是:
的長度爲N條的顏色的數組,以獨立地顏色的每個欄。
我猜想這只是一個facecolor,它不是假設傳達的信息和bar3d不返回任何東西。 像輪廓返回一個ScalarMappable
可以用來指定顏色條。它看起來像你的cmap(我認爲是cm.ScalarMappable
?)不包含色條所需的標準和自動縮放。
這樣的工作,你身邊可以得出一定的限度之間的彩條自己在本example
fig.subplots_adjust(bottom=0.25)
ax1 = fig.add_axes([0.05, 0.10, 0.9, 0.1])
norm = mpl.colors.Normalize(vmin=dz.min(), vmax=dz.max())
cb1 = mpl.colorbar.ColorbarBase(ax1, cmap=mpl.cm.cool,
norm=norm,
orientation='horizontal')
,你的最小值和最大值爲dz
指定範圍,這與您的數據是一致的。
編輯:添加一個最小工作示例,您指定一個顏色映射,使用它獲取顏色條並將此顏色映射添加到底部。
from mpl_toolkits.mplot3d import Axes3D
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x, y = np.random.rand(2, 100) * 4
hist, xedges, yedges = np.histogram2d(x, y, bins=4)
elements = (len(xedges) - 1) * (len(yedges) - 1)
xpos, ypos = np.meshgrid(xedges[:-1]+0.25, yedges[:-1]+0.25)
xpos = xpos.flatten()
ypos = ypos.flatten()
zpos = np.zeros(elements)
dx = 0.5 * np.ones_like(zpos)
dy = dx.copy()
dz = hist.flatten()
#Define colormap and get values for barcolors from it
cmap = plt.cm.RdYlBu_r
norm = mpl.colors.Normalize(vmin=dz.min(), vmax=dz.max())
barcolors = plt.cm.ScalarMappable(norm, cmap)
#Plot bar3d
ax.bar3d(xpos, ypos, zpos, dx, dy, dz, color=barcolors.to_rgba(dz),alpha=0.4,linewidth=0.5, zsort='average')
#Add colorbar
fig.subplots_adjust(bottom=0.25)
ax1 = fig.add_axes([0.05, 0.10, 0.9, 0.1])
cb1 = mpl.colorbar.ColorbarBase(ax1, cmap=cmap,
norm=norm,
orientation='horizontal')
plt.show()
其中給出,
我用'色= cmap.to_rgba(DZ)'而繪製'酒吧chart',所以按照你的榜樣,當我試圖把'CMAP = CMAP .to_rgba'代碼也崩潰。任何想法我怎麼能夠''rgba'到'cmap'。 – diffracteD
我已經添加了一個如何做到這一點的最小示例,這個想法是你選擇一個'cmap',從中獲取條形顏色,然後在整個範圍內繪製'colorbar'(符合'dz的範圍底部值)。 –