我使用熊猫并经常出现以下情况:我想绘制散点图,其中x和y是数字,我还有一个字符串列,其中包含分类数据,如“car”& “van”或“fast”,“slow”,“average”,像这样:
df = pd.DataFrame(
{
"cat": ['a', 'b', 'a', 'c'],
"kpi1": [1,2,3,4],
"kpi2": [4,3,2,1]
}
)
明显的可视化是根据此列为点着色。 我认为我可以这样做:
fig.scatter(x="kpi1", y="kpi2", color="cat", source=ColumnDataSource(df))
然而,这不起作用,所有点都具有相同的颜色。 According to this answer,我必须添加以下几行:
import bokeh.models as bmo
from bokeh.palettes import d3
palette = d3['Category10'][len(df['cat'].unique())]
color_map = bmo.CategoricalColorMapper(factors=df['cat'].unique(),
palette=palette)
fig.scatter(x='kpi1', y='kpi2',
color={'field': 'cat', 'transform': color_map}, source=ColumnDataSource(df))
这意味着5条复杂的代码行,而不是添加单个参数。这不可能是添加颜色编码的最简单方法吗?有没有办法使用默认颜色,例如在seaborn?