You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 01:49:07