Выпуск 3d гистограммы в Matplotlib - PullRequest
7 голосов
/ 26 января 2012

Когда я делаю 3D-гистограмму с 4 или более значениями, график выглядит правильно, но когда я пробую это с 3-мя столбцами, они становятся треугольниками, что происходит?

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')

color_grade_classes = ['#80FF00','#FFFF00','#FF8000', '#FF0000']

for colors, rows  in zip(color_grade_classes, [3,2,1,0] ):  
  indexs = np.arange(3)
  heights = np.random.rand(3)
  print rows, indexs, heights, colors

  ax.bar(indexs, heights, zs = rows,  zdir='y', color=colors, alpha=0.8)

ax.set_xlabel('X')
ax.set_ylabel('Y')

plt.show()

генерирует это:

Triangular bar

но когда я увеличиваю количество индексов и высот до 5, я получаю это:

Correct bar

Ответы [ 2 ]

1 голос
/ 23 июля 2012

Это почти наверняка ошибка. Попытка примера кода дает мне желаемый результат прямоугольных столбцов с любым количеством точек (проверено с 1, 2, 3, 5, 15) Example of code working as desired for 3 points

Я использую Matplotlib версии 1.1.1rc в Linux. Если вы можете, попробуйте обновить до последней версии. Обратите внимание, что

import matplotlib
print matplotlib.__version__

скажет вам, какую версию вы используете.

0 голосов
/ 19 февраля 2012

Это потому, что вы даете ему только 3 очка за сюжет. Просто измените код на следующий, и он должен работать.

indexs = np.arange(4)  # not 3
heights = np.random.rand(4) # not 3
...