如何为Pandas单行DataFrame绘图的指定行设置不同颜色
解决Pandas绘图指定行变色的问题
问题原因
你之前的代码失效,是因为Pandas的DataFrame.plot()方法的color参数不支持逐点指定颜色:
- 当传入颜色列表时,该参数是为多列数据分配颜色(每列对应一个颜色);
- 你只有一列数据,所以它会取列表的最后一个颜色(也就是你循环修改后的蓝色)应用到整个线条上,导致全图变蓝。
解决方案
要实现指定行区间变色,需要分多次绘制不同区间的数据,分别指定颜色:
import matplotlib.pyplot as plt # 简写数据框变量名方便操作 df = recorded_values_of_accelerometer # 绘制蓝色区间:前78行(索引0-77) + 295行及之后的部分 plt.plot(df.iloc[:78].index, df.iloc[:78], color='blue') plt.plot(df.iloc[295:].index, df.iloc[295:], color='blue') # 绘制红色区间:78到294行(对应索引78-294,因为iloc[78:295]是左闭右开) plt.plot(df.iloc[78:295].index, df.iloc[78:295], color='red') # 可选:添加标题、标签等 plt.title('Accelerometer Values with Highlighted Range') plt.ylabel('Accelerometer Value') plt.show()
补充说明
- 用
iloc定位行可以确保不受DataFrame自定义索引的影响,精准选取行区间; - 如果你的DataFrame使用默认的整数索引,也可以直接用
df.index[:78]和df[:78],但iloc的兼容性更强。
内容的提问来源于stack exchange,提问作者Anonymous Person
相关产品推荐
相关产品推荐

