Scatter 对象和 figure.scatter 方法的区别
Difference between Scatter object and figure.scatter method
我有以下与这两张图相关的问题:
图 1:
output_notebook()
scatter = Scatter(df_b, x='log_umsatz', y='log_fte', color='target', legend="top_right")
show(scatter)
图 2
output_notebook()
scatter = figure(plot_width=500, plot_height=500)
scatter.scatter(x=df_b['log_umsatz'], y=df_b['log_fte'], color=df['target'])
p.legend.location = "top_left"
p.legend.click_policy="hide"
show(scatter)
如您所见,我使用散景生成了两个散点图。在第二张图中,我尝试引入一些与 p.legend.click_policy="hide"
的交互性。我有两个问题:交互性不起作用,图例和颜色编码在第二个示例中丢失。怎么会?我希望图 1 和图 2 相同。
您的主要问题是您使用的图 1 Scatter
是散景图模型。 Bokeh Charts 是一个用于绘制数据的高级库,并在幕后为您进行大量数据处理和图表格式化。在图 2 中,您正在使用 Bokeh 字形来创建绘图,因此您需要更加明确地说明您希望它做什么。
修复你的代码,我可以生成与原始散点图相同的图表。
cds = ColumnDataSource(df_b)
color_mapper = CategoricalColorMapper(
palette=['red', 'green'], factors=[0, 1])
scatter = figure(plot_width=500, plot_height=500)
scatter.circle(x='log_umsatz', y='log_fte',
color={'field': 'target', 'transform': color_mapper}, alpha=0.5,
source=cds, legend='target')
scatter.legend.location = "top_right"
如您所见,我们需要调用多个其他散景对象。 ColumnDataSource
存储 pandas 数据,CategoricalColorMapper
将颜色映射到因子。
现在向情节添加交互式图例有点复杂。现在,在 Bokeh 上,交互式图例以每个字形为基础工作。也就是说,每个字形都必须单独绘制才能处理。您可以阅读更多相关信息 here,这里有一个快速演示可以帮助您。
scatter = figure(plot_width=500, plot_height=500)
scatter.circle(x=[1, 2, 3], y=[1, 2, 3], color='red', legend='0', alpha=0.5)
scatter.circle(x=[4, 5], y=[4, 5], color='green', legend='1', alpha=0.5)
scatter.legend.location = "top_right"
scatter.legend.click_policy = "hide"
我有以下与这两张图相关的问题:
图 1:
output_notebook()
scatter = Scatter(df_b, x='log_umsatz', y='log_fte', color='target', legend="top_right")
show(scatter)
图 2
output_notebook()
scatter = figure(plot_width=500, plot_height=500)
scatter.scatter(x=df_b['log_umsatz'], y=df_b['log_fte'], color=df['target'])
p.legend.location = "top_left"
p.legend.click_policy="hide"
show(scatter)
如您所见,我使用散景生成了两个散点图。在第二张图中,我尝试引入一些与 p.legend.click_policy="hide"
的交互性。我有两个问题:交互性不起作用,图例和颜色编码在第二个示例中丢失。怎么会?我希望图 1 和图 2 相同。
您的主要问题是您使用的图 1 Scatter
是散景图模型。 Bokeh Charts 是一个用于绘制数据的高级库,并在幕后为您进行大量数据处理和图表格式化。在图 2 中,您正在使用 Bokeh 字形来创建绘图,因此您需要更加明确地说明您希望它做什么。
修复你的代码,我可以生成与原始散点图相同的图表。
cds = ColumnDataSource(df_b)
color_mapper = CategoricalColorMapper(
palette=['red', 'green'], factors=[0, 1])
scatter = figure(plot_width=500, plot_height=500)
scatter.circle(x='log_umsatz', y='log_fte',
color={'field': 'target', 'transform': color_mapper}, alpha=0.5,
source=cds, legend='target')
scatter.legend.location = "top_right"
如您所见,我们需要调用多个其他散景对象。 ColumnDataSource
存储 pandas 数据,CategoricalColorMapper
将颜色映射到因子。
现在向情节添加交互式图例有点复杂。现在,在 Bokeh 上,交互式图例以每个字形为基础工作。也就是说,每个字形都必须单独绘制才能处理。您可以阅读更多相关信息 here,这里有一个快速演示可以帮助您。
scatter = figure(plot_width=500, plot_height=500)
scatter.circle(x=[1, 2, 3], y=[1, 2, 3], color='red', legend='0', alpha=0.5)
scatter.circle(x=[4, 5], y=[4, 5], color='green', legend='1', alpha=0.5)
scatter.legend.location = "top_right"
scatter.legend.click_policy = "hide"