Python 在Matplotlib中打印三维条形图

Python 在Matplotlib中打印三维条形图,python,python-3.x,matplotlib,plot,matplotlib-basemap,Python,Python 3.x,Matplotlib,Plot,Matplotlib Basemap,使用matplotlib和basemap绘制简单多边形集合和三维条形图时,为什么会出现以下情况。用它所说的创建这些类型的图的方式,我们可以创建这种类型的图 然而,有趣的是,如果你不把“全部”放大到一组特定的条形图上,它们看起来会偏离中心,尽管它们并不是真的偏离中心。这是因为多边形倾斜,而杆保持静止的结果。每当倾斜/旋转绘图时,多边形都会朝着条的上方移动,这相当烦人,因为它会破坏绘图的外观 有人知道如何避免/解决这个问题吗?我已经包含了一些示例图像来描述这种行为 这可能不是解决这个问题的最佳方法,

使用
matplotlib
basemap
绘制简单多边形集合和三维条形图时,为什么会出现以下情况。用它所说的创建这些类型的图的方式,我们可以创建这种类型的图

然而,有趣的是,如果你不把“全部”放大到一组特定的条形图上,它们看起来会偏离中心,尽管它们并不是真的偏离中心。这是因为多边形倾斜,而杆保持静止的结果。每当倾斜/旋转绘图时,多边形都会朝着条的上方移动,这相当烦人,因为它会破坏绘图的外观

有人知道如何避免/解决这个问题吗?我已经包含了一些示例图像来描述这种行为


这可能不是解决这个问题的最佳方法,如果有人有更好的方法,请与我们分享

我发现一个非常简单的方法来绕过横条上的多边形并创建这种偏移外观,就是简单地使多边形集合具有高透明度因子。不幸的是,这也带走了多边形的面颜色集,这就是为什么我不喜欢将其作为解决方案,因为您不能再拥有广泛的操作面/边颜色的选项。结果是以下差异:

我创建的条形图也有一个
alpha
选项设置为
alpha=0.5
,如果有人想知道为什么它们看起来如此透明,当然可以更改该选项

在多边形集合中不操纵
alpha
选项,例如

map = Basemap()
figure = plot.figure()
axes = Axes3D(figure)
for polygon in map.landpolygons:
    polygons.append(polygon.get_cords())
    #alpha = 0-1 in the below 1 highest 0 lowest
    collection = PolyCollection(polygons, closed = False)
axes.add_collection3d(collection)
结果如下

map = Basemap()
figure = plot.figure()
axes = Axes3D(figure)
for polygon in map.landpolygons:
    polygons.append(polygon.get_cords())
    #alpha = 0-1 in the below 1 highest 0 lowest
    collection = PolyCollection(polygons, closed = False)
axes.add_collection3d(collection)

collection=PolyCollection(polygons,alpha=0,closed=False)中指定alpha选项0将导致以下结果

map = Basemap()
figure = plot.figure()
axes = Axes3D(figure)
for polygon in map.landpolygons:
    polygons.append(polygon.get_cords())
    #alpha = 0-1 in the below 1 highest 0 lowest
    collection = PolyCollection(polygons, closed = False)
axes.add_collection3d(collection)

有趣的是,alpha选项设置为
alpha=0.4
,您可以看到创建的多边形开始与条形重叠的位置


您是否尝试过调整底图的zorder。draw*调用?我尝试过使用zorder,但可能我遗漏了一些东西。您对调整zorder有什么建议?