如何解决Matplotlib子图中零斜率线条不可见的问题
解决加速度子图水平线条不显示的问题
我来帮你搞定这个问题!你的加速度子图没显示出预期的零斜率线条,核心原因是你只传递了单个数值给plt.plot(),它无法生成对应x轴范围的连续直线。下面是修改后的完整代码,完全符合你的需求:
import numpy as np import matplotlib.pyplot as plt t = np.arange(1, 10, 1) spd_graph = np.exp(t/2) velo_graph = 3*t # 修改:生成和t长度一致的固定值数组,这里用10作为示例(你可以换成任意在0-30之间的数值) accel_graph = np.full_like(t, 10) # plot speed ax1 = plt.subplot(311, ylabel='Speed') plt.plot(t, spd_graph,'c') plt.setp(ax1.get_xticklabels(), fontsize=6) plt.setp(ax1.get_yticklabels(), visible=False) plt.ylim(0,30) plt.xlim(0,10) # plot velocity ax2 = plt.subplot(312, ylabel='Velocity') plt.plot(t, velo_graph,'g') plt.setp(ax2.get_xticklabels(), fontsize=6) plt.setp(ax2.get_yticklabels(), visible=False) plt.ylim(0,30) plt.xlim(0,10) # plot acceleration ax3 = plt.subplot(313, xlabel='Time', ylabel='Acceleration') # 修改:传入x轴数据t和y轴数据accel_graph,确保线条在正确的x范围上绘制 plt.plot(t, accel_graph,'b') plt.setp(ax3.get_xticklabels(), fontsize=6) plt.setp(ax3.get_yticklabels(), visible=False) plt.ylim(0,30) plt.xlim(0,10) plt.show()
关键修改点说明:
- 生成加速度数组:用
np.full_like(t, 10)创建一个和t长度完全相同的数组,每个元素都是固定值10。这样既保证了线条是零斜率的水平直线,又能和前两个子图的x轴范围(1到10)完全匹配。 - 正确调用plot函数:绘制加速度时,必须同时传入x轴数据
t和y轴数据accel_graph,也就是plt.plot(t, accel_graph, 'b')——只传单个数值的话,Matplotlib只会绘制一个孤立的点,自然看不到线条。
修改后,第三个子图就会显示一条从x=1延伸到x=10的水平直线,完全符合你演示概念的需求,而且所有子图的x轴范围保持一致。
内容的提问来源于stack exchange,提问作者nao
相关产品推荐
相关产品推荐

