含NaN样本的Numpy绘图问题:如何让图表从x=0处开始显示?
解决Matplotlib折线图从x=1开始而非x=0的问题
这个问题很常见——因为你的y数组第一个元素是np.nan,Matplotlib在绘制折线图时会自动跳过这个无效数据点,所以折线从x=1的位置开始,而且默认的x轴范围会自动适配有效数据的范围,导致看起来图表“从x=1开始”。要强制让图表(x轴)从x=0开始,有两种简单的解决方法:
方法1:手动设置x轴的左边界
直接用plt.xlim()函数指定x轴的起始值为0,这样不管数据里有没有无效点,x轴都会从0开始显示:
import numpy as np import matplotlib.pyplot as plt x = np.arange(0.0, 5, 1) y = np.array([np.nan, 2, 3, 4, 5]) plt.plot(x, y) # 强制x轴从0开始 plt.xlim(left=0) plt.show()
这样设置后,x轴的起始点会固定在0,即使x=0对应的y值是NaN,这个位置依然会出现在图表里,折线从x=1开始绘制,但x轴范围包含0。
方法2:保留x=0的位置并标记空点(可选)
如果你希望在x=0的位置明确显示一个空点(而不是直接跳过),可以把np.nan对应的位置单独绘制标记:
import numpy as np import matplotlib.pyplot as plt x = np.arange(0.0, 5, 1) y = np.array([np.nan, 2, 3, 4, 5]) plt.plot(x, y) # 在x=0的位置绘制空心圆点表示缺失值 plt.scatter(x[0], y[0], marker='o', facecolor='none', edgecolor='blue') plt.xlim(left=0) plt.show()
这样x=0的位置会显示一个空心圆点,明确表示这里有个缺失值,同时x轴从0开始。
内容的提问来源于stack exchange,提问作者infoclogged
相关产品推荐
相关产品推荐

