我有一个简单的pandas.DataFrame,内容如下:
我将其绘制如下:
df = pd.DataFrame(
{
"journey": ['ch1', 'ch2', 'ch2', 'ch1'],
"cat": ['a', 'b', 'a', 'c'],
"kpi1": [1,2,3,4],
"kpi2": [4,3,2,1]
}
)
我将其绘制如下:
import bokeh.plotting as bpl
import bokeh.models as bmo
bpl.output_notebook()
source = bpl.ColumnDataSource.from_df(df)
hover = bmo.HoverTool(
tooltips=[
("index", "@index"),
('journey', '@journey'),
("Cat", '@cat')
]
)
p = bpl.figure(tools=[hover])
p.scatter(
'kpi1',
'kpi2', source=source)
bpl.show(p) # open a browser
我无法根据cat
对点进行着色。最终,我希望第一个和第三个点是同一种颜色,第二个和第四个点是两种更不同的颜色。
如何使用Bokeh实现这一目标?
R/ggplot2
转过来的,我对Python
的绘图社区感到非常失望。看看 plotly;同样的问题。你必须为每个系列创建列表,这似乎确实很复杂。我发布了这个答案,因为这是当时我能找到的最简单的方法(尽管我在bokeh
方面相当菜鸟)。如果你能找到更简单的方法,请发另一个答案。 - Hendyggplot
中必须引用变量)。from plotnine import *; ggplot(df, aes(x='kpi1', y='kpi2', color='cat')) + geom_point()
- Hendyplotnine
有一段时间了(我非常想念ggplot...)。不幸的是,我一直在为需要悬停和缩放功能的人创建图表,而且我真的无法摆脱plotly或bokeh。你的观察不仅有趣,而且突出了使用gg时代码可以变得多么简单、流畅和易读。 - mic