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

运行lifelines生存分析代码遇AttributeError:_process_plot_var_args无get_next_color属性

解决lifelines绘图时的AttributeError: '_process_plot_var_args' object has no attribute 'get_next_color'问题

嘿,我之前碰到过类似的报错,这个问题大概率是Python 2.7环境下lifelines和matplotlib版本不兼容导致的——毕竟Python2.7早在2020年就停止维护了,lifelines的新版本基本都是针对Python3开发的,对旧版本Python的适配已经跟不上了。下面给你几个可行的解决方案:

1. 优先升级到Python 3.x版本(最推荐)

这是一劳永逸的办法,毕竟Python2.7已经被淘汰,后续会碰到更多库兼容问题:

  • 先安装Python 3.8及以上的版本(官网下载即可)
  • 建议创建一个新的虚拟环境,避免污染旧环境
  • 执行命令安装最新版依赖:
    pip install lifelines matplotlib
    
  • 记得把代码里的Python2语法改成Python3的:把print data.sample(6)改成print(data.sample(6)),然后重新运行代码就能正常绘图了。

2. 在Python2.7下指定兼容的库版本

如果暂时没法升级Python,那就安装适配Python2.7的旧版本lifelines和matplotlib:

  • 执行下面的命令安装指定版本:
    pip install lifelines==0.23.0 matplotlib==2.2.5
    

这两个版本是经过验证可以在Python2.7下稳定运行lifelines绘图功能的。

3. 手动修改代码规避颜色获取逻辑

你也可以通过手动创建绘图轴对象、指定颜色的方式,绕过报错的颜色自动获取逻辑:
修改后的代码如下:

import pandas as pd
from lifelines.datasets import load_dd
import matplotlib.pyplot as plt
data = load_dd()
print(data.sample(6))  # Python3语法,Python2下可以改回print data.sample(6)
from lifelines import KaplanMeierFitter
kmf = KaplanMeierFitter()
T = data["duration"]
E = data["observed"]
kmf.fit(T, event_observed=E)

# 手动创建绘图轴并指定颜色
fig, ax = plt.subplots()
kmf.survival_function_.plot(ax=ax)
kmf.plot(ax=ax, color='darkorange')  # 手动设置颜色,避免自动获取
plt.title('Survival function of political regimes')
plt.show()

错误原因补充

这个报错本质是lifelines的set_kwargs_color函数尝试从绘图轴对象的_get_lines.get_next_color()方法获取自动颜色,但在你的环境中,轴对象被包装成了_process_plot_var_args类型,没有这个属性——这完全是版本不兼容导致的对象结构差异,解决版本问题或者手动指定颜色就能绕过这个问题。

内容的提问来源于stack exchange,提问作者Rabindra Nath Nandi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:46:27