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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:19:20