применить цветовую карту к mpl_toolkits.mplot3d.Axes3D.bar3d

Существует аргумент «color» для функции bar3d Axes3D, который может принимать массивы для окраски отдельных полос разных цветов, но как применить цветовую карту (т.е. cmap = cm.jet) так же, как функция plot_surface, например? Это сделало бы бар определенной высоты цветом, отражающим его высоту.

http://matplotlib.sourceforge.net/examples/mplot3d/hist3d_demo.html

http://matplotlib.sourceforge.net/mpl_toolkits/mplot3d/api.html

2 Solutions collect form web for “применить цветовую карту к mpl_toolkits.mplot3d.Axes3D.bar3d”

Вы можете передать цветной массив в аргумент facecolors, он может установить каждый патч на поверхности цвета.

from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm from matplotlib.ticker import LinearLocator, FormatStrFormatter import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.gca(projection='3d') X = np.arange(-5, 5, 0.25) Y = np.arange(-5, 5, 0.25) X, Y = np.meshgrid(X, Y) R = np.sqrt(X**2 + Y**2) Z = np.sin(R) colors = np.random.rand(40, 40, 4) surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=colors, linewidth=0, antialiased=False) ax.set_zlim(-1.01, 1.01) ax.zaxis.set_major_locator(LinearLocator(10)) ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f')) plt.show() 

введите описание изображения здесь

Вот мое решение:

 offset = dz + np.abs(dz.min()) fracs = offset.astype(float)/offset.max() norm = colors.normalize(fracs.min(), fracs.max()) colors = cm.jet(norm(fracs)) ax.bar3d(xpos,ypos,zpos,1,1,dz, color=colors) 

Первая строка требуется только в том случае, если ваши данные становятся отрицательными.

Код, приведенный здесь, http://matplotlib.sourceforge.net/examples/pylab_examples/hist_colormapped.html .

  • Изменение масштаба оси в нулевом графике
  • Маркировка оси с помощью matplotlib слишком разрежена
  • Работа с Python, файлы
  • Построение графика нескольких строк с использованием панд и matplotlib
  • Графический график 3D-графика Matplotlib с градиентом цвета
  • Matplotlib: использование фигурного объекта для инициализации графика
  • Построение линии над несколькими графиками
  • Центральное происхождение в matplotlib
  • Python - лучший язык программирования в мире.