Matplotlib中的3D条形图问题

ycl3bljg  于 2023-05-01  发布在  其他
关注(0)|答案(2)|浏览(118)

当我用4个或更多的值制作一个3d条形图时,图形看起来是正确的,但是当我用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()

生成了这个:

但是当我将索引和高度的数量增加到5时,我得到:

3df52oht

3df52oht1#

这几乎可以肯定是一个bug。尝试你的示例代码,我得到了想要的矩形条的结果,有任意数量的点(用1,2,3,5,15测试):

我正在运行matplotlib版本1。1.1rc,在linux上。如果可以,请尝试更新到最新版本。注意

import matplotlib
print matplotlib.__version__

会告诉你你用的是哪个版本

wi3ka0sx

wi3ka0sx2#

这是因为你只给它3个点来绘制。只需将代码更改为以下内容,它应该可以工作。

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

相关问题