我刚刚开始使用 Bokeh,特别是因为它可以(或者,至少,我认为它可以)在 Python 环境中绘制和弦图。但是,如果源类别和目标类别相同,则绘图似乎失败。例如,我采用了在各种其他软件中用于说明目的的“头发偏好”数据,并尝试使用散景绘制该数据。但是,绘图失败,因为在某些情况下源和目标是相同的。代码如下所示:
import sys
if sys.version_info[0] < 3:
from StringIO import StringIO
else:
from io import StringIO
import pandas as pd
TESTDATA=StringIO("""has,prefers,count
"black","red",2868
"blonde","brown",2060
"brown","blonde",16145
"red","black",1013
"black","brown",8916
"blonde","blonde",10048
"brown","black",8010
"red","red",6907
"black","blonde",5871
"blonde","black",1951
"brown","red",8045
"red","brown",940
"black","black",11975
"blonde","red",6171
"brown","brown",8090
"red","blonde",990
""")
df = pd.read_csv(TESTDATA, sep=",")
chord_from_df = Chord(df, source="has", target="prefers", value="count")
output_file('chord_from_df.html', mode="inline")
show(chord_from_df)
但它失败并出现错误:
IndexError: pop from empty list
有谁知道使用 Bokeh 或可以处理这种情况的替代 Python 包的解决方法?