繁体   English   中英

次要 x 轴标签

[英]Secondary x axis labels

我有两个 csv 文件,它们在我的录制过程中按时间顺序生成(它们都有一个基于一个时钟的时间戳列)。 我想 plot 我在 matplotlib 中的数据(或者在其他地方使用 python,如果你有更好的建议)。

在我的主要 x 轴上,我想要一般的连续时间戳(来自 csv 文件 1)。

在我的 y 轴上,我需要记录我想要的变量(来自 csv 文件 1)。

在我的辅助 x 轴上,我需要有我的实验事件或注释(来自 csv 文件 2),就在它们发生时的时间戳(滴答声)上。

我尝试 plot 所有这些,这样:

ticks = annotations_pd_frame['timestamp']
labels = annotations_pd_frame['label']

fig, ax1 = plt.subplots()
ax2 = ax1.twiny()

fig.set_figheight(5)
fig.set_figwidth(25)
ax1.yaxis.grid()

plt.xticks(ticks, labels)

plt.plot(pupil_data_in_trial_eye0['pupil_timestamp'].loc[pupil_data_in_trial_eye0['trial'] == trial_label], pupil_data_in_trial_eye0['diameter_3d'].loc[pupil_data_in_trial_eye0['trial'] == trial_label])
plt.plot(pupil_data_in_trial_eye1['pupil_timestamp'].loc[pupil_data_in_trial_eye1['trial'] == trial_label], pupil_data_in_trial_eye1['diameter_3d'].loc[pupil_data_in_trial_eye1['trial'] == trial_label])

plt.legend(['eye0', 'eye1'])
ax1.set_xlabel('Timestamps [s]')
ax1.set_ylabel('Diameter [mm]')
plt.title('Pupil Diameter in ' + str(label) )
plt.grid(b=True)

Z628CB5675FF524F3E719B7AA2E2E88FE3FZ的示例在此处: Z5E056C500A1C4B6AA1110B507B507BADE5Z://GIST.ZBF2151B5151B5152137B5137B37B37B37BRRA RRARRA RRARRA)

第一个图是当我使用 plt.plot plot 我的主要数据时,我得到了正确的刻度和标签(刻度和标签在这一次数据试验中正确显示),但主 x 轴上的时间戳不正确。

第二个图是当我 plot 使用 ax1.plot 我的主要数据时,我在主 x 轴上得到了正确的时间戳,但不正确的刻度和标签(整个运行的刻度和标签显示在这一次数据试验中)。

任何想法我做错了什么?

我是这样解决的:

for (t, l) in zip(ticks, labels):
    ax1.axvline(t, color='black', linestyle='--')
    trans = mtransforms.blended_transform_factory(ax1.transData, ax1.transAxes)
    ax1.text(t, 1.1, l, ha='center', transform=trans, rotation = 30) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM