散景布局的背景颜色

时间:2017-06-17 16:51:52

标签: python bokeh

我正在玩Bokeh sliders demo(源代码here),我正在尝试更改整个页面的背景颜色。虽然使用background_fill_colorborder_fill_color可以轻松更改图形的颜色,但其余布局仍会显示在白色背景上。是否有我可以添加到主题的属性,允许我通过curdoc().theme设置颜色?

4 个答案:

答案 0 :(得分:2)

目前没有任何Python属性可以控制HTML背景颜色。 HTML和CSS是一个巨大的领域,因此Bokeh不是为每个可能的样式选项创建相应的Python属性,而是提供了一个提供自己的HMTL模板的通用机制,以便可以应用任何标准的熟悉的CSS。

通过向Directory-style Bokeh App添加templates/index.html文件,可以轻松完成此操作。模板应为Jinja2 template<head>中需要定义两个替换:

  • {{ bokeh_css }}
  • {{ bokeh_js }}

以及<body>中需要的两个:

  • {{ plot_div }}
  • {{ plot_script }}

该应用将出现在plot_script出现在模板中的任何位置。除此之外,您还可以应用所需的任何HTML和CSS。你可以在这里看到一个具体的例子:

https://github.com/bokeh/bokeh/blob/master/examples/app/crossfilter

更改页面背景的简化模板可能如下所示:

<!DOCTYPE html>
<html lang="en">
    <head>
        <style>
            body { background: #2F2F2F; }
        </style>
        <meta charset="utf-8">
        {{ bokeh_css }}
        {{ bokeh_js }}
    </head>
    <body>
        {{ plot_div|indent(8) }}
        {{ plot_script|indent(8) }}
    </body>
</html>

答案 1 :(得分:1)

更改.bk-root样式对我有用:

from bokeh.resources import Resources
from bokeh.io.state import curstate
from bokeh.io import curdoc, output_file, save
from bokeh.util.browser import view
from bokeh.models.widgets import Panel, Tabs
from bokeh.plotting import figure 

class MyResources(Resources):
    @property
    def css_raw(self):
        return super().css_raw + [
            """.bk-root {
                    background-color: #000000;
                    border-color: #000000;
                    }
            """
        ]

f = figure(height=200, width=200)
f.line([1,2,3], [1,2,3])

tabs = Tabs( tabs=[ Panel( child=f, title="TabTitle" ) ], height=500 )

output_file("BlackBG.html")
curstate().file['resources'] = MyResources(mode='cdn')
save(tabs)
view("./BlackBG.html")

答案 2 :(得分:1)

如果您使用 rowcolumn 在文档中显示多个图形,解决方法是设置 background 属性,如下所示:

curdoc().add_root(row(fig1, fig2, background="beige"))

答案 3 :(得分:0)

来自Bokeh documentation

背景填充样式由background_fill_color控制 和Plot对象的background_fill_alpha属性:

from bokeh.plotting import figure, output_file, show

output_file("background.html")

p = figure(plot_width=400, plot_height=400)
p.background_fill_color = "beige"
p.background_fill_alpha = 0.5

p.circle([1, 2, 3, 4, 5], [2, 5, 8, 2, 7], size=10)

show(p)

plot with non-white background