当布局放入标签

时间:2016-12-08 23:15:03

标签: python bokeh

我有一本包含散景图列表的字典。 我打电话给这些并在布局上放置2个图并将它们放入3或4个标签中。

当我打开文档时,每个标签看起来只有一个图,但你可以看出它背后有第二个图,有时你可以看到第二个图的一小部分。

当我只是show(layout)它看起来很好时,只有当我尝试在选项卡中使布局无法正确呈现时才会这样。

我已经重新设置了如何设置它的问题。下面有点长,但我想有一个完整的例子。第一部分是创建所有的情节。请注意需要更改的目录路径。

from bokeh.charts import Bar, output_file, show, BoxPlot, Histogram, Scatter
from bokeh.sampledata.autompg import autompg as df
from bokeh.models.widgets import Tabs, Panel
from bokeh.layouts import layout
import os
directory = r'/Users/user/bokehApp'


bar = []
p = Bar(df, 'cyl', values='mpg', title="Total MPG by CYL")
bar.append(p)
p = Bar(df, label='yr', values='mpg', agg='mean',
        title="Average MPG by YR")
bar.append(p)
p = Bar(df, 'yr', values='displ',
        title="Total DISPL by YR", bar_width=0.4)
bar.append(p)
p = Bar(df, 'yr', values='displ',
        title="Total DISPL by YR", color="wheat")
bar.append(p)

box = []
p = BoxPlot(df, values='mpg', label='cyl',
            title="MPG Summary (grouped by CYL)")
box.append(p)
p = BoxPlot(df, values='mpg', label=['cyl', 'origin'],
            title="MPG Summary (grouped by CYL, ORIGIN)")
box.append(p)
p = BoxPlot(df, values='mpg', label='cyl', color='#00cccc',
            title="MPG Summary (grouped by CYL)")
box.append(p)
p = BoxPlot(df, values='mpg', label='cyl', color='cyl',
            title="MPG Summary (grouped and shaded by CYL)")
box.append(p)
hist = []
p = Histogram(df['mpg'], title="MPG Distribution")
hist.append(p)
p = Histogram(df, 'hp', title="HP Distributioan")
hist.append(p)
p = Histogram(df, values='displ', title="DISPL Distribution")
hist.append(p)
p = Histogram(df, values='mpg', bins=50,
              title="MPG Distribution (50 bins)")
hist.append(p)
scat = []
p = Scatter(df, x='mpg', y='hp', title="HP vs MPG",
            xlabel="Miles Per Gallon", ylabel="Horsepower")
scat.append(p)

以上是我从高级图表页面获取的所有图表,下面是问题。

dataDict = {'Bar': bar, 'Box': box, 'Hist': hist, 'Scat': scat}

plots = ['Bar', 'Box', 'Hist']

for plt in plots:
    plotFig = dataDict[plt]
    tabList = [plotFig[0:2],plotFig[2:4]]
    tabTitle =['tab1', 'tab2']
    panel = []
    output_file(os.path.join(directory, plt+'.html'), title = plt + 'plots', autosave = False, mode = 'cdn', root_dir = None)
    for tab, title in zip (tabList, tabTitle):
        l = layout(children = [
                   tab], sizing_mode = 'scale_width')
        t = Panel(child = l, title = title)
        panel.append(t)
    tabs = Tabs(tabs = panel)
    show(tabs)

由于

2 个答案:

答案 0 :(得分:1)

在您的描述中并非100%确定您的意思"在#34;之上在这种情况下。但是Bokeh保留了一份隐含的"当前文件"积累到。如果你不想要这个(例如因为你在循环中创建和保存不同的图),那么你可以:

答案 1 :(得分:0)

当我将上述sizing_mode = 'scale_width'更改为sizing_mode = 'fixed'时,它会正确呈现。