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

使用UpSetPlot报错:'RangeIndex' object has no attribute 'levels'

UpSetPlot绘图失败的问题修正

你的代码存在三个关键问题,对应修正方案如下:

问题点与修正说明

  • 错误调用绘图函数:你导入了UpSet类但未实际使用,直接写plot(upset)会因未定义该函数报错。需使用UpSet类实例化后调用plot(),或从upsetplot导入plot函数。
  • matplotlib引用错误:你导入的是plt别名,但最后调用pyplot.show(),应改为plt.show()。
  • 数据格式未适配:CSV读取的布尔值会变成字符串类型("FALSE"/"TRUE"),需转为Python原生bool类型;同时要让UpSetPlot识别分类列与计数列的对应关系。

修正后的完整代码

方式一:使用UpSet类(推荐)

import pandas as pd
from matplotlib import pyplot as plt
from upsetplot import UpSet

# 读取数据
upset_df = pd.read_csv("upset.csv")
# 将字符串格式的布尔值转为原生bool类型
upset_df[['cat0', 'cat1', 'cat2']] = upset_df[['cat0', 'cat1', 'cat2']].astype(bool)
# 将分类列设置为索引,让UpSet识别集合分组
upset_df = upset_df.set_index(['cat0', 'cat1', 'cat2'])
# 初始化UpSet并绘制图表
UpSet(upset_df).plot()
# 显示图表
plt.show()

方式二:直接使用plot函数

import pandas as pd
from matplotlib import pyplot as plt
from upsetplot import plot

upset_df = pd.read_csv("upset.csv")
upset_df[['cat0', 'cat1', 'cat2']] = upset_df[['cat0', 'cat1', 'cat2']].astype(bool)
# 显式指定计数列为value
plot(upset_df, value='value')
plt.show()

运行上述代码后,就能正确生成UpSet图表了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:30:54