【问题标题】:How to keep smaller value in front in a 3d bar chart如何在 3d 条形图中保持较小的值在前面
【发布时间】:2016-12-22 05:30:54
【问题描述】:

此问题与问题How do I keep the smaller value in a bar chart in front (when I cannot place the bars side by side)?有关

我想在 3d 情节中做这样的事情。虽然掩码看起来不错,但 plot 只显示更高的值。我不明白为什么这段代码没有绘制不会相互覆盖的条形图。每个步骤(ax.bar)看起来不错,但结合在一起只显示更高的值。我做错了什么?

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import numpy.ma as ma

dim1 = np.array([0, 1, 0, 1])
dim2 = np.array([0, 0, 1, 1])
var1 = np.array([1, 2, 1.5, 1.25])
var2 = np.array([0.5, 2.2, 1.15, 1.75])

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

mask_var1 = ma.where(var1>=var2)
mask_var2 = ma.where(var2>=var1)

print mask_var1
print mask_var2

# Draw var1 bar where var1 >= var2
ax.bar(dim1[mask_var1], var1[mask_var1], dim2[mask_var1], zdir='y', width=0.1, color='red')
# Draw var2
ax.bar(dim1, var2, dim2, zdir='y', width=0.1, color='blue')
# Draw var1 bar where var2 >= var1
ax.bar(dim1[mask_var2], var1[mask_var2], dim2[mask_var2], zdir='y', width=0.1, color='red')

plt.show()

【问题讨论】:

    标签: python matplotlib plot


    【解决方案1】:

    看起来Axes3Dproblems 以这种方式分层补丁。您可以只计算和绘制每个补丁的可见部分。

    # Draw var1 bar where var1 >= var2
    ax.bar(dim1[mask_var1], (var1 - var2)[mask_var1], dim2[mask_var1],
           bottom=var2[mask_var1], zdir='y', width=0.1, color='red')
    
    # Draw var2 bar where var2 >= var1
    ax.bar(dim1[mask_var2], (var2 - var1)[mask_var2], dim2[mask_var2],
           bottom=var1[mask_var2], zdir='y', width=0.1, color='blue')
    
    # Draw var1 bar where var2 >= var1
    ax.bar(dim1[mask_var2], var1[mask_var2], dim2[mask_var2], zdir='y',
           width=0.1, color='red')
    
    # Draw var2 bar where var1 >= var2
    ax.bar(dim1[mask_var1], var2[mask_var1], dim2[mask_var1], zdir='y',
           width=0.1, color='blue')
    

    【讨论】:

      猜你喜欢
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 2014-10-30
      • 2018-11-09
      • 2013-08-06
      • 1970-01-01
      相关资源
      最近更新 更多