我有一個如下所示的數據框:MM Initial Energy MM Initial Angle QM Energy QM Angle0 13.029277 120.0 18.048 120.01 11.173115 125.0 15.250 125.02 9.411475 130.0 12.668 130.03 7.762888 135.0 10.309 135.04 6.239025 140.0 8.180 140.05 4.853004 145.0 6.286 145.06 3.617394 150.0 4.633 150.07 2.544760 155.0 3.226 155.08 1.646335 160.0 2.070 160.09 0.934298 165.0 1.166 165.010 0.419003 170.0 0.519 170.011 0.105913 175.0 0.130 175.012 0.000000 -180.0 0.000 -180.013 0.105988 -175.0 0.130 -175.014 0.420029 -170.0 0.519 -170.015 0.937312 -165.0 1.166 -165.016 1.650080 -160.0 2.070 -160.017 2.548463 -155.0 3.227 -155.018 3.621227 -150.0 4.633 -150.019 4.856266 -145.0 6.286 -145.020 6.236939 -140.0 8.180 -140.021 7.760035 -135.0 10.309 -135.022 9.409117 -130.0 12.669 -130.023 11.170671 -125.0 15.251 -125.024 13.033293 -120.0 18.048 -120.0我想用 x 軸上的角度和 y 軸上的能量來繪制數據。這聽起來很簡單,但是會發生什么是 pandas 或 matplotlib 以我的情節看起來分裂的方式對 X 軸值進行排序。這是它的樣子:但是,這就是我想要的:我的代碼如下:df=pd.read_fwf('scan_c1c2c3h31_orig.txt', header=None, prefix='X')df.rename(columns={'X0':'MM Initial Energy', 'X1':'MM Initial Angle', 'X2':'QM Energy', 'X3':'QM Angle'}, inplace=True)df=df.sort_values(by=['MM Initial Angle'], axis=0, ascending=True)df=df.reset_index(drop=False)df2=pd.read_fwf('scan_c1c2c3h31.txt', header=None, prefix='X')df2.rename(columns={'X0':'MM Energy', 'X1':'MM Angle', 'X2':'QM Energy', 'X3':'QM Angle'}, inplace=True)
1 回答

Helenr
TA貢獻1780條經驗 獲得超4個贊
如果您不需要重新調整繪圖,我會根據正角繪圖0-360并手動重新標記刻度:
fig, ax = plt.subplots()
(df.assign(Angle=df['MM Initial Angle']%360)
.plot(x='Angle', y=['QM Energy','MM Initial Energy'], ax=ax)
)
ax.xaxis.set_major_locator(MultipleLocator(20))
x_ticks = ax.get_xticks()
x_ticks = [t-360 if t>180 else t for t in x_ticks]
ax.set_xticklabels(x_ticks)
plt.plot()
添加回答
舉報
0/150
提交
取消