我對我一直在處理的代碼得到了一些很好的反饋,并且我已經讓一切都可以在 google collab 上運行,但是當我在 Visual Studio 上運行完全相同的代碼時,我得到的錯誤是這樣的:
發生例外:TypeError show() 需要 1 個位置引數,但給出了 2 個
這是我的代碼:
import pandas as pd
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
def run_analytics(data):
for i in set(data['MovementNumber'].values):
print("Plot for Movement Number " str(i))
data2 = data.loc[data['MovementNumber'] == i]
ax = plt.axes(projection='3d')
xdata = data2['PlayerPosX'].values
ydata = data2['PlayerPosY'].values
zdata = data2['PlayerPosZ'].values
len(xdata)
plot1 = ax.scatter3D(xdata[:,1], ydata, zdata, c=zdata)
plt.show(plot1)
if __name__ == "__main__":
data = pd.read_csv('Assetslog_912021_11.csv')
data.columns = ['Time', 'Fixed Delta', 'Movement Time', 'MovementNumber', 'MovementDir', 'Rest Flag', 'DistortionDigit', 'RobotForceX','RobotForceY','RobotForceZ', 'PrevPositionX','PrevPositionY','PrevPositionZ', 'TargetPosX', 'TargetPosY', 'TargetPosZ', 'PlayerPosX', 'PlayerPosX', 'PlayerPosY', 'PlayerPosZ', 'RobotVelX','RobotVelY','RobotVelZ', 'LocalPosX', 'LocalPosY', 'LocalPosZ', 'PerpError' ]
data['RobotForce'] = data[['RobotForceX', 'RobotForceY', 'RobotForceZ']].values.tolist()
data['StartPos'] = data[['PrevPositionX', 'PrevPositionY', 'PrevPositionZ']].values.tolist()
data['TargetPos'] = data[['TargetPosX', 'TargetPosY', 'TargetPosZ']].values.tolist()
data['PlayerPos'] = data[['PlayerPosX', 'PlayerPosY', 'PlayerPosZ']].values.tolist()
data['RobotVel'] = data[['RobotVelX', 'RobotVelY', 'RobotVelZ']].values.tolist()
run_analytics(data)
我知道它可以進一步優化,但現在我不太擔心那部分。我知道我需要添加這個:
class MyClass():
def __init__(self,show):
self.plot1 = plot1
self.data = data
self.run_analytics = run_analytics
但我不認為我正確地稱呼自己。有人可以向我解釋一下嗎?
謝謝!:)
- 快樂編碼
uj5u.com熱心網友回復:
show() 函式不接受引數:
import pandas as pd
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
def run_analytics(data):
for i in set(data['MovementNumber'].values):
print("Plot for Movement Number " str(i))
data2 = data.loc[data['MovementNumber'] == i]
ax = plt.axes(projection='3d')
xdata = data2['PlayerPosX'].values
ydata = data2['PlayerPosY'].values
zdata = data2['PlayerPosZ'].values
len(xdata)
plot1 = ax.scatter3D(xdata[:,1], ydata, zdata, c=zdata)
plt.show()
if __name__ == "__main__":
data = pd.read_csv('Assetslog_912021_11.csv')
data.columns = ['Time', 'Fixed Delta', 'Movement Time', 'MovementNumber', 'MovementDir', 'Rest Flag', 'DistortionDigit', 'RobotForceX','RobotForceY','RobotForceZ', 'PrevPositionX','PrevPositionY','PrevPositionZ', 'TargetPosX', 'TargetPosY', 'TargetPosZ', 'PlayerPosX', 'PlayerPosX', 'PlayerPosY', 'PlayerPosZ', 'RobotVelX','RobotVelY','RobotVelZ', 'LocalPosX', 'LocalPosY', 'LocalPosZ', 'PerpError' ]
data['RobotForce'] = data[['RobotForceX', 'RobotForceY', 'RobotForceZ']].values.tolist()
data['StartPos'] = data[['PrevPositionX', 'PrevPositionY', 'PrevPositionZ']].values.tolist()
data['TargetPos'] = data[['TargetPosX', 'TargetPosY', 'TargetPosZ']].values.tolist()
data['PlayerPos'] = data[['PlayerPosX', 'PlayerPosY', 'PlayerPosZ']].values.tolist()
data['RobotVel'] = data[['RobotVelX', 'RobotVelY', 'RobotVelZ']].values.tolist()
run_analytics(data)
uj5u.com熱心網友回復:
show 不接受輸入,實體訪問的方法
instance.plot()是正確的用法以獲取更多資訊,請檢查
您的案例中的檔案而不是此行plt.show(plot1)寫plot1.show()
uj5u.com熱心網友回復:
不需要這個均衡
plot1 = ax.scatter3D(xdata[:,1], ydata, zdata, c=zdata)
你必須像這樣改變:
ax.scatter3D(xdata[:,1], ydata, zdata, c=zdata)
plt.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/343736.html
標籤:Python
