【问题标题】:Including time tags on (X,Y,Z) coordinate plots [duplicate]在(X,Y,Z)坐标图上包括时间标签[重复]
【发布时间】:2019-07-20 01:52:22
【问题描述】:

我有一个数据框飞行数据,其中包含 X、Y 和 Z 位置坐标以及时间。我想创建一个 3-D 图,我可以:

1) 将鼠标悬停在每个散点上并让它显示该点的 X、Y、Z 和时间

2) 为特定点添加注释。例如,为 Time > 900 和 X

我也愿意接受任何其他可以提供类似可视化的方法。截至目前,我使用颜色条来显示轨迹期间时间的增加,但我需要给出更详细的可视化。

编辑:明确地说,我要解决的主要问题是如何使用数据帧每一行中的所有信息(即 X、Y、Z 和时间)来注释每个数据点。

import numpy as np
import pandas as pd
from mpl_toolkits import mplot3d
import matplotlib.pyplot as plt

data = pd.DataFrame({"X": np.linspace(0,500,1001), 
                     "Y": np.linspace(100,1000,1001), 
                     "Z": np.linspace(0,100,1001),
                     "Time": np.linspace(0,1000,1001)})

fig = plt.figure()
ax = plt.axes(projection = "3d")
img = ax.scatter(data.X, data.Y, data.Z, c = data.Time, cmap = "Greens")
fig.colorbar(img)
plt.show()

【问题讨论】:

    标签: python matplotlib data-visualization


    【解决方案1】:

    对于悬停数据,您可以使用plotly。在最近的版本中,您可以使用绑定到plotly 中的plotly.express

    import pandas as pd
    import numpy as np
    import plotly.express as px
    
    data = pd.DataFrame({"X": np.linspace(0,500,1001),
                         "Y": np.linspace(100,1000,1001),
                         "Z": np.linspace(0,100,1001),
                         "Time": np.linspace(0,1000,1001)})
    
    fig = px.scatter_3d(data, x = "X", y = "Y", z = "Z", hover_data = ["Time"])
    
    # your plot will be rendered in your browser
    fig.show()
    

    如果您使用的是旧版本的 plotly,或者您不想使用 express 语法,您可以通过以下方式实现相同的目的:

    import plotly.graph_objects as go
    import pandas as pd
    import numpy as np
    
    data = pd.DataFrame({"X": np.linspace(0,500,1001),
                         "Y": np.linspace(100,1000,1001),
                         "Z": np.linspace(0,100,1001),
                         "Time": np.linspace(0,1000,1001)})
    
    fig = go.Figure(
        data = [
            go.Scatter3d(
                x = data["X"], 
                y = data["Y"], 
                z = data["Z"], 
                mode = "markers"
            ),
            hover_data = ["Time"]
        ]
    )
    
    
    fig.show()
    

    【讨论】:

    • 这几乎正是我正在寻找的,除了我需要一种方法来包含每个坐标的时间。我觉得这是我问题的症结所在。如果它不是情节中的三个轴之一,是否可以包括在内?
    • 糟糕,错过了问题的那一部分,请参阅编辑 :)
    猜你喜欢
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    相关资源
    最近更新 更多