在 Python 的 matplotlib 库中,很容易在创建时指定坐标区对象的投影:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
ax = plt.axes(projection='3d')
Run Code Online (Sandbox Code Playgroud)
但是如何确定现有轴对象的投影呢?没有ax.get_projection,ax.properties不包含“投影”键,并且快速谷歌搜索没有发现任何有用的东西。
我正在尝试使用python pandas处理一些视频跟踪实验中的数据。我在结构上放置了多个点标记,并随时间跟踪了点的XY坐标。这些数据一起描述了测试过程中结构的形状。我在将数据安排到分层/嵌套DataFrame对象中时遇到麻烦。
我的跟踪方法针对视频的每一帧输出每个点的X,Y坐标(和时间)。此数据存储在csv文件中,其中每个变量对应一列,每个视频帧对应一行:
t,x,y
0.000000000E0,-4.866015168E2,-2.116143012E0
1.000000000E-1,-4.866045511E2,-2.123012558E0
2.000000000E-1,-4.866092436E2,-2.129722560E0
Run Code Online (Sandbox Code Playgroud)
使用pandas.read_csv我能够将这些csv文件读入DataFrames,具有相同的列/行格式:
In [1]: pd.read_csv(point_a.csv)
Out[17]:
t x y
0 0.0 -486.601517 -2.116143
1 0.1 -486.604551 -2.123013
2 0.2 -486.609244 -2.129723
Run Code Online (Sandbox Code Playgroud)
到目前为止没有问题。
我想合并上面DataFrame的几个(每个点一个),并创建一个DataFrame带有分层列的大型列,其中所有变量共享一个索引(视频帧)。请参阅下面的栏目point_a,point_b等等,与子栏为x,y,t。该shape列表示用于绘制结构形状的有用向量。
| point_a | point_b | point_c | shape
frames | x y t | x y t | x y t | …Run Code Online (Sandbox Code Playgroud) 我正在尝试在3D matplotlib轴对象中移动刺。
这似乎是一个非常简单的问题,但是我没有找到直接解决此问题的任何问题/答案。我在此问题的底部列出了我对该主题的研究列表。
我可以在matplotlib 2D图中设置棘刺的位置。如下代码:
import matplotlib.pyplot as plt, numpy as np
fig, axes = plt.subplots(1, 2)
r, theta = 1, np.linspace(0, 2*np.pi, 100)
x, y = r*np.cos(theta), r*np.sin(theta)
for ax in axes: # plot the same data on both axes
ax.plot(x, y)
ax.set_aspect("equal")
for spine in ax.spines.values(): # adjust spines on last active axis
spine.set_position(("data", 0))
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用3D轴进行相同操作时...
z = np.zeros(x.shape) # exciting stuff
fig = plt.figure()
for i in range(2): # create two 3D subplots
ax = plt.subplot(1,2,i+1, …Run Code Online (Sandbox Code Playgroud)