现在接到一个任务,需要画一个时序信号,底部坐标轴标时间,另外,图中要在特定时刻画出竖线,并在顶部坐标轴上对应位置标标签.
首先要解决上下坐标轴不同的问题.
比如说我们先生成一组数据data
import numpy as np import matplotlib.pyplot as plt plt.switch_backend('agg') data = np.random.randn(10)然后要画图
fig = plt.figure() ax = fig.add_subplot(111) ax.plot(data)以上内容想必大家都很熟悉了.这时的图片是这样的
这时,要对底部坐标轴做各种操作大家应该也很熟悉.而如果要对顶部坐标轴做操作,需要先建立顶部坐标轴的对象
ax_top = ax.twiny()至于为什么是twiny而不是twinx我也没搞清楚.总之,twiny是顶部坐标轴,而twinx是右部坐标轴.虽然看上去有点奇怪,但实际就是这样,用就好了.
好,现在我要在横轴坐标6的地方画一条竖线
ax.axvline(6, linestyle='--', color='red') # 红色虚线想要在顶部横坐标为6的位置标上'key',首先需要把底部和顶部横坐标对应起来,也就是底部横坐标的刻度与顶部横坐标的刻度设置一致.
xticks = ax.get_xticks() ax.set_xticks(xticks) xlim = ax.get_xlim() ax_top.set_xlim(xlim)这里需要对底部坐标轴重新设置xticks是因为如果不设置的话,底部坐标轴和顶部坐标轴的坐标位置会有些许的偏差.
然后在对应位置添加'key'
top_tick = [6] top_label = ['key'] # 这两行分别是要显示坐标的位置以及置换的标签 ax_top.set_xticks(top_tick) ax_top.set_xticklabels(top_label)现在看看效果