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

如何从指定日期开始更改Pandas价格折线图的曲线颜色?

实现折线图分段颜色(指定日期后改为红色)

核心思路

要实现指定位置后曲线变色,需要将数据拆分为两段分别绘制:前半段用默认颜色,指定位置(第100天)及之后用红色。同时先修正你代码中索引未生效的问题。

完整代码示例

import pandas as pd
import matplotlib.pyplot as plt

# 数据处理:修正索引问题
df = pd.DataFrame.from_dict(cryptocurrency.prices)
df["time"] = pd.to_datetime(df["time"], unit="s")
df = df.set_index("time")  # 必须将time设为索引,才能方便分割数据

# 定义分割点:第100天(索引从0开始,第100行及之后变红)
split_position = 100
# 如果需要按具体日期分割,替换为下面一行(示例日期)
# split_date = pd.to_datetime("2024-05-01")

# 创建画布并分段绘制
plt.figure(figsize=(12, 8))

# 绘制前100天的曲线(默认颜色)
plt.plot(df["close"].iloc[:split_position], label="Price")
# 按日期分割的写法:plt.plot(df["close"][df.index < split_date], label="Price")

# 绘制第100天及之后的曲线(红色)
plt.plot(df["close"].iloc[split_position:], color="red", label="Price (After Day 100)")
# 按日期分割的写法:plt.plot(df["close"][df.index >= split_date], color="red", label="Price (After Specified Date)")

# 图表配置
plt.title(cryptocurrency.name)
plt.legend()
plt.grid()
plt.show()

关键细节说明

  • 索引修正:你原代码中的df.set_index("time", inplace=False)没有赋值给变量,导致索引未生效,必须通过df = df.set_index("time")或inplace=True确认索引设置。
  • 分割逻辑:
    • 按行数分割:用iloc[:split_position]取前100行,iloc[split_position:]取第100行及之后的数据。
    • 按具体日期分割:直接用日期比较筛选数据,更适合非连续时间序列场景。
  • 图例控制:如果不需要区分两段曲线,可将后半段的label设为和前半段一致,图例只会显示一个条目。

内容的提问来源于stack exchange,提问作者linux888

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:31:01