【问题标题】:Python Bokeh Bar Chart - Modify Legend BoxPython Bokeh 条形图 - 修改图例框
【发布时间】:2016-04-11 10:19:24
【问题描述】:

我正在使用 Bokeh.Charts.Bar 创建条形图。我的问题是,我有一个 15 个标签的图例框,这个图例框覆盖了最右边的列(我使用的是 legend='top-right',如果我将其更改为 'top-left ',它将覆盖最左边的列)。所以我正在尝试创建一个图例对象(bokeh.models.annotations.legend)来设置 background_fill_data = 0、label_standoff、legend_pedding 等,以便移动图例框或使其透明,以便更容易创建图表.然而,到目前为止,我一无所获。非常感谢您的帮助。谢谢。

bar = Bar(result_df, values='Value', label='Label', legend='bottom_right',
                  stack='Stack', title="Title", bar_width=0.4,
                  color=color(columns='Stack', palette=self.get_colors(5), tools="pan,wheel_zoom,box_zoom,reset,resize,hover")
        hover = bar.select(dict(type=HoverTool))
        hover.tooltips=[("Stack", "@Stack"), (field_name, "@height{" + tooltip_fmt + "}")]


legend = Legend({
              "background_fill_alpha": {
                "value": 0
              },
              "background_fill_color": {
                "value": "#ffffff"
              },
              "border_line_alpha": {
                "value": 1.0
              },
              "border_line_cap": "butt",
              "border_line_color": {
                "value": "black"
              },
              "border_line_dash": [],
              "border_line_dash_offset": 0,
              "border_line_join": "miter",
              "border_line_width": {
                "value": 1
              },
              "glyph_height": 20,
              "glyph_width": 20,
              "label_height": 20,
              "label_standoff": 15,
              "label_text_align": "left",
              "label_text_alpha": {
                "value": 1.0
              },
              "label_text_baseline": "middle",
              "label_text_color": {
                "value": "#444444"
              },
              "label_text_font": "helvetica",
              "label_text_font_size": {
                "value": "10pt"
              },
              "label_text_font_style": "normal",
              "label_width": 50,
              "legend_padding": 10,
              "legend_spacing": 3,
              "legends": [],
              "level": "annotation",
              "location": "top_right"
            })
bar.add_legend(legend)

【问题讨论】:

  • 任何人都可以提供帮助或指出解决方案吗?

标签: python bar-chart legend bokeh


【解决方案1】:

尝试在对 Bar 的调用中将 legend kwarg 设置为 legend=None。这样,该图例永远不会呈现,并且当您添加自定义图例时,它将是唯一的图例。不过只是一种预感。

【讨论】:

  • 感谢 ericmark26。 Bokeh 刚刚发布了一个新版本(6 月),它支持将图例置于情节之外,所以这个问题现在已经消失了。
  • 很高兴听到这个消息。我的建议有效吗(我的好奇心必须得到满足:))?
  • 我的解决方案和你类似,但是我一开始没有设置legend=None。我用图例创建了条形图。然后我创建了一个新的图例对象new_legend=bar.legends[0],然后我设置了bar.legends[0]=None,最后设置了bar.add_layout(new_legend, 'right')。原因是我不知道如何为条形图手动创建图例。图例对象需要字形(在本例中为列)在标签和列之间匹配,我无法从栏中提取每个单独的字形。我希望我解释得足够清楚:)
  • 如何为柱状图手动创建图例?
  • 我不能。我只是让条形图创建它的图例对象。然后我将该图例对象复制到一个新变量,禁用原始条的图例对象最后我将新创建的图例添加到条并根据我认为合适的方式对其进行修改。
猜你喜欢
  • 2016-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 2020-11-18
  • 1970-01-01
  • 2017-02-24
  • 2021-04-25
相关资源
最近更新 更多