2017-07-05 11 views
1

hereを見ると、同じ行に2つのプロットがあります。画面サイズに合わせて行全体を拡大/縮小する必要がありますが、プロットの縦横比を維持する必要があります。画面に応じたスケーリングBokeh

私は引数:sizing_mode = 'scale width'で試してみましたが、プロットの高さが変わるため動作しません。 P1が行の最初のプロットであり、P2が行の2番目のプロットである

p1 = figure(plot_width=NewRanges_Row1[0], plot_height=height, tools=[hover1, TOOLS], title="CHROMOSOME_1", 
      toolbar_location="above", responsive = True) 
p1.circle('x1', 'y1', fill_color=chromosome1_colors, line_color=chromosome1_colors, 
      fill_alpha=chromosome1_transparency, size=7, source=source1) 
p2 = figure(plot_width=NewRanges_Row1[1], plot_height=height, tools=[hover22, TOOLS], title="CHROMOSOME_22") 
p2.circle('x22', 'y22', fill_color=chromosome22_colors, line_color=chromosome22_colors, 
      fill_alpha=chromosome22_transparency, size=7, source=source22) 

同じ行の幅の比率を維持しながら、画面のサイズに応じてBokeh図を自動的に拡大縮小する方法はありますか?

答えて

0

複雑なレイアウトの場合、Bokehのレスポンシブプロット機能はまだまだ不十分です。私が見つけた解決策は、Pythonの組み込みライブラリを使用して画面の解像度を決定し、各オブジェクトの高さと幅の値を設定することです。

import ctypes 
screen_width = ctypes.windll.user32.GetSystemMetrics(0) 
max_width = floor(96 * screen_width/100) # buffer to adjust 
p1_width = 0.8*max_width 
p2_width = 0.2*max_width 

しかし、これは、アプリケーションの起動時に画面の解像度が一度だけ決定されたとして、それがユーザーのブラウザページにサイズを変更しないので、Webアプリケーションが本当に応答しないことを意味します。より反応の良いアプリが必要な場合は、アプリのCSSとjsを調整して調べる必要があります。

関連する問題