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

Matplotlib绘制最低价折线图异常:图形呈块状而非折线

解决Matplotlib绘制最低价折线图呈现块状的问题

常见原因及修复方案

1. 报价列数据类型非数值

如果bid_price_1、bid_price_2、bid_price_3是字符串类型,计算出的最低价无法形成连续数值序列,导致图形呈现块状。

  • 修复代码:
# 将报价列转换为数值类型,无法转换的值设为NaN
df[['bid_price_1', 'bid_price_2', 'bid_price_3']] = df[['bid_price_1', 'bid_price_2', 'bid_price_3']].apply(pd.to_numeric, errors='coerce')

2. 数据未按时间/索引排序

若数据的时间轴顺序混乱,折线图的点会无序连接,看起来像块状。

  • 修复代码:
# 按时间列(假设为timestamp)排序,确保数据时序正确
df = df.sort_values('timestamp')

3. 最低价计算逻辑错误

未正确提取每行的最低报价,或误用了聚合值,会导致图形异常。

  • 正确计算每行最低价:
# 计算每行三个报价中的最小值
df['min_bid_price'] = df[['bid_price_1', 'bid_price_2', 'bid_price_3']].min(axis=1)

4. 绘图函数/参数误用

如果用了bar、step等非折线绘图函数,或设置了错误的样式参数,会生成块状图形。务必使用plot函数绘制折线。

  • 正确绘图代码:
import matplotlib.pyplot as plt

# 筛选PEARLS产品数据
pearls_data = df[df['product'] == 'PEARLS']

plt.figure(figsize=(10,6))
# 使用plot绘制折线,指定线型为实线
plt.plot(pearls_data['timestamp'], pearls_data['min_bid_price'], linestyle='-', linewidth=2)
plt.title('PEARLS 最低报价折线图')
plt.xlabel('时间')
plt.ylabel('最低报价')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

完整可运行示例

import pandas as pd
import matplotlib.pyplot as plt

# 加载数据(替换为你的数据路径)
df = pd.read_csv('your_data_file.csv')

# 数据预处理
df[['bid_price_1', 'bid_price_2', 'bid_price_3']] = df[['bid_price_1', 'bid_price_2', 'bid_price_3']].apply(pd.to_numeric, errors='coerce')
pearls_data = df[df['product'] == 'PEARLS'].sort_values('timestamp')
pearls_data['min_bid_price'] = pearls_data[['bid_price_1', 'bid_price_2', 'bid_price_3']].min(axis=1)

# 绘制折线图
plt.figure(figsize=(10,6))
plt.plot(pearls_data['timestamp'], pearls_data['min_bid_price'], linestyle='-', marker='.', markersize=4)
plt.title('PEARLS 实时最低报价折线图')
plt.xlabel('时间戳')
plt.ylabel('最低报价')
plt.xticks(rotation=45)
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()

内容的提问来源于stack exchange,提问作者Martijn Z.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:20:13