matplotlib 3d plot with changing labels

前端 未结 3 638
慢半拍i
慢半拍i 2021-01-22 12:56

So I have a 3d live-updating graph! it only shows one point at a time so I can easily track the motion of the point! But here is the problem:

No matter what I seem to do

3条回答
  •  灰色年华
    2021-01-22 13:02

    An Axes3D object (your ax variable) has the following methods: set_xlim, set_ylim, and set_zlim. You could use these to fix the limits of your axes.

    Documentation:

    • set_xlim
    • set_xlim3d

    Edit

    Using set_xlim, etc, works for me. Here is my code:

    #!python2
    
    from mpl_toolkits.mplot3d import Axes3D
    from pylab import *
    
    data = [
        [-1.982905,  3.395062,  8.558263,  '2012-01-18 14:00:03'],
        [ 0.025276, -0.399172,  7.404849,  '2012-01-18 14:00:04'],
        [-0.156906, -8.875595,  1.925565,  '2012-01-18 14:00:05'],
        [ 2.643088, -8.307801,  2.382624,  '2012-01-18 14:00:06'],
        [3.562265, -7.875230,  2.312898,  '2012-01-18 14:00:07'],
        [4.441432, -7.907592,  2.851774,  '2012-01-18 14:00:08'],
        [4.124187, -7.854146,  2.727229,  '2012-01-18 14:00:09'],
        [4.199698, -8.135596,  2.677706,  '2012-01-18 14:00:10'],
        [4.407856, -8.133449,  2.214902,  '2012-01-18 14:00:11'],
        [4.096238, -8.453822,  1.359692,  '2012-01-18 14:00:12'],
    ]
    
    ion()
    fig = figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.set_xlabel('X Label')
    ax.set_ylabel('Y Label')
    ax.set_zlabel('Z Label')
    ax.set_xlim((-10, 11))
    ax.set_ylim((-10, 11))
    ax.set_zlim((-10, 11))
    
    lin = None
    for x, y, z, t in data:
        ax.set_title(t)
        if lin is not None:
            lin.remove()
        lin = ax.scatter(x, y, z)
        draw()
        pause(0.1)
    
    ioff()
    show()
    

    Edit 2

    You could have a look at switching off autoscaling of axes which is on by default. Maybe this is overriding the set_lim methods.

    Documentation:

    • autoscale
    • autoscale_view

提交回复
热议问题