matplotlib绘制两个随机numpy数组折线不显示的原因及修正方法
故障原因
代码无法显示折线的核心原因是传入plt.plot()的numpy数组维度不符合要求:
- 你通过
np.random.randint(..., size=(1, 10))生成的是形状为(1,10)的二维数组(1行10列),而非绘图需要的一维序列。 - matplotlib处理二维数组输入时,会将数组的每一行识别为一条独立的数据序列。你传入的两个数组都只有1行,输入逻辑会被识别为10条独立序列,每条序列仅包含1个数据点。单数据点无法生成连线,因此最终只能看到你设置的
*形标记,看不到折线。
修正代码
只需要把数组改为一维结构即可,推荐直接在生成数组时指定一维长度,修正后可正常显示带标记的折线:
import numpy as np import matplotlib.pyplot as plt # 生成长度为10的一维随机数组 a = np.random.randint(2, 10, size=10) b = np.random.randint(5, 15, size=10) plt.title("Line graph") plt.xlabel("X axis") plt.ylabel("Y axis") plt.plot(a, b, color="green", label="Sample Line", marker="*") plt.legend() # 补充图例调用,原代码设置了label但未调用该方法不会显示图例 plt.show()
如果你不想修改数组生成逻辑,也可以在绘图时对数组做降维处理,比如写成
plt.plot(a.flatten(), b.flatten(), ...),效果完全一致。
内容的提问来源于stack exchange,提问作者Nikhil R
相关产品推荐
相关产品推荐

