python如何使用matplotlib画出上下不同的坐标轴

xiaoxiao2025-10-19  9

现在接到一个任务,需要画一个时序信号,底部坐标轴标时间,另外,图中要在特定时刻画出竖线,并在顶部坐标轴上对应位置标标签.

首先要解决上下坐标轴不同的问题.

比如说我们先生成一组数据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)

现在看看效果

转载请注明原文地址: https://www.6miu.com/read-5038177.html

最新回复(0)