matplotlib pyplot绘图异常:预期曲线却显示直线的解决方法
解决matplotlib绘制曲线显示为直线的问题
嘿,这个问题我太熟悉啦!你遇到的直线问题,根源出在你的numpy数组数据类型上。
你初始化的数组a里混合了字符串(比如'16x28')和数值,numpy为了统一数组类型,会把所有元素都转换成字符串类型。当你用plt.plot(a[:,1])和plt.plot(a[:,2])绘图时,matplotlib把这些字符串当成了分类变量,而不是连续的数值,自然就画出直线了。
解决步骤很简单:
- 先把数组里的数值列转换成浮点型
- 再正常调用绘图函数就行
完整的修正代码:
import numpy as np import matplotlib.pyplot as plt # 你的原始数据 a = np.array([['16x28', 0.023392, 0.006976], ['64x36', 0.029888, 0.039104], ['512x288', 0.033328, 2.198592], ['1024x576', 0.065632, 5.864992], ['3840x2160', 0.801120, 76.550461]]) # 关键:把数值列转换成浮点型 a[:, 1:] = a[:, 1:].astype(float) # 绘图 plt.xticks([0,1,2,3,4], a[:,0]) plt.plot(a[:,1], label='Curve 1') # 可以加label方便区分 plt.plot(a[:,2], label='Curve 2') plt.legend() # 显示图例 plt.show()
额外小提示:
- 如果后续还要处理这类混合数据,也可以在初始化数组时指定dtype为
object,不过转换为数值类型还是必要的,因为plot只认数值。 - 加上图例和标签能让图表更清晰哦!
内容的提问来源于stack exchange,提问作者Aray Karjauv
相关产品推荐
相关产品推荐

