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

如何在Pandas中绘制含两种不同颜色的单条折线图

问题与解决方案

问题描述

现有如下Pandas与Matplotlib代码:

import pandas as pd
import matplotlib.pyplot as plt
alist = [110,120,130]
blist = [150,170,190]

df1 = pd.Series(alist)
df2 = pd.Series(blist)

frames = [df1, df2]
result = pd.concat(frames)

df3 = result.reset_index(drop=False)
df3.plot(y=0)
plt.show()

当前绘制出的折线图为单一颜色,能否将df1对应的线段设为蓝色、df2对应的线段设为绿色,同时仍保持为单条折线?

解决方案

可以实现,直接用Matplotlib的底层绘图功能分两段绘制即可,修改后的代码如下:

import pandas as pd
import matplotlib.pyplot as plt

alist = [110,120,130]
blist = [150,170,190]

df1 = pd.Series(alist)
df2 = pd.Series(blist)

# 合并数据并重置索引,确保x轴连续
result = pd.concat([df1, df2]).reset_index(drop=True)

# 获取x、y轴数据
x = result.index
y = result.values

# 绘制df1对应的线段(蓝色)
plt.plot(x[:3], y[:3], color='blue')
# 绘制从df1终点到df2所有点的线段(绿色,保证折线连续)
plt.plot(x[2:], y[2:], color='green')

plt.show()

关键说明

  • 第一段绘制df1的三个点,线段设为蓝色;
  • 第二段从df1的最后一个点开始绘制到df2的所有点,这样既保证了折线连续,又让df2对应的线段(包括连接df1终点的那条)变成绿色;
  • 如果只需要df1内部的线段为蓝色、df2内部的线段为绿色,不需要中间连接线段变色,可将第二段代码改为plt.plot(x[3:], y[3:], color='green'),但这样折线会在df1和df2之间出现断点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:25:17