【问题标题】:3-d Rectangles in MatplotlibMatplotlib 中的 3-d 矩形
【发布时间】:2016-06-11 16:27:45
【问题描述】:

我有这个数据集

500295  152342  25286
500295  157981  24120.6
500295  163619  15469.8
500295  169258  18071.8
500295  174897  25624.7
500295  180536  30323.5
500295  186174  8828.7
500295  191813  4681.19
500295  197452  7470.08
500295  203090  29070.4
506851  152342  2181.82
506851  157981  1809.44
506851  163619  3045.71
506851  169258  7433.56
506851  174897  10637.3
506851  180536  12511.1
506851  186174  7514.93
506851  191813  5468.37

前两个数字是坐标,第三个是重量。我想用它制作一个 3-D 情节。我现在正在使用

W = pd.read_csv('data.txt',sep='\t')
W.columns = ['X','Y','W']
mpl.rcParams['legend.fontsize'] = 10
fig = plt.figure()
ax = fig.gca(projection='3d')

ax.plot(W.X, W.Y, W.W,'o')
ax.legend()

plt.show()

产生下图

我想制作应该从底部开始到实际值的点、3-d 矩形或任何其他形状。 有什么帮助吗?

谢谢你

【问题讨论】:

    标签: python matplotlib plot 3d


    【解决方案1】:

    您可以为此使用bar3D。使用您提供的数据:

    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    import numpy as np
    
    xsize = 1000
    ysize = 4000
    data = np.loadtxt('data')
    x, y, dz = data[:, 0], data[:, 1], data[:, 2]
    dx, dy, z = np.ones(x.shape)*xsize, np.ones(x.shape)*ysize, np.zeros(x.shape)
    
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    
    ax.bar3d(x, y, z, dx, dy, dz, color='green')
    
    plt.show()
    

    ,结果为:

    但请注意,matplotlib 目前还不是一个好的 3D 引擎。有关详细信息,请参阅this post

    【讨论】:

    • 太棒了,效果很好。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 2018-07-18
    • 2019-04-07
    • 2019-09-27
    • 2012-03-23
    • 2019-04-06
    • 2014-12-20
    相关资源
    最近更新 更多