Layouts#

cuxfilter has both preset and custom layout options. See examples below on how to use both.

Download Dataset#

[1]:
from cuxfilter.sampledata import datasets_check
[ ]:
DATA_DIR = './data'
! curl https://data.rapids.ai/viz-data/146M_predictions_v2.arrow.gz --create-dirs -o $DATA_DIR/146M_predictions_v2.arrow.gz
datasets_check('mortgage', base_dir=DATA_DIR)

Import and Setup Charts#

[ ]:
from cuxfilter import charts
import cuxfilter
from bokeh import palettes
import panel as pn

cux_df = cuxfilter.DataFrame.from_arrow('./data/146M_predictions_v2.arrow')

chart0 = charts.choropleth(x='zip', color_column='delinquency_12_prediction', color_aggregate_fn='mean',
                                  geo_color_palette=palettes.Purples9,
                                  geoJSONSource = 'https://raw.githubusercontent.com/rapidsai/cuxfilter/GTC-2018-mortgage-visualization/javascript/demos/GTC%20demo/public/data/zip3-ms-rhs-lessprops.json',
                                  nan_color='white')
chart1 = charts.bar('dti')
chart2 = charts.bar('delinquency_12_prediction',data_points=50)
chart3 = charts.bar('borrower_credit_score', step_size=1)
chart4 = charts.bar('seller_name')
chart5 = charts.scatter(x='loan_id',y='current_actual_upb')
chart6 = charts.scatter('zip', 'dti')
chart7 = charts.heatmap('dti','borrower_credit_score', aggregate_col='delinquency_12_prediction', aggregate_fn="mean")
chart8 = charts.line('loan_id','borrower_credit_score')

#create a list of charts
charts_list = [chart0, chart3, chart1, chart2, chart4, chart5, chart6, chart7, chart8]

widgets = [charts.multi_select('dti'), charts.card(pn.pane.Markdown("""
## Sample Palette Legend

- ![#A932FF](https://via.placeholder.com/15/A932FF/000000?text=+) `#A932FF`: Purple 1
- ![#8E44AD](https://via.placeholder.com/15/8E44AD/000000?text=+) `#8E44AD`: Purple 2
- ![#6C3483](https://via.placeholder.com/15/6C3483/000000?text=+) `#6C3483`: Purple 3
- ![#512E5F](https://via.placeholder.com/15/512E5F/000000?text=+) `#512E5F`: Purple 4
- ![#341C4E](https://via.placeholder.com/15/341C4E/000000?text=+) `#341C4E`: Purple 5
""")) ]

User-defined Layouts#

Layout_array#

Custom layouts are applied using an input parameter to the .dashboard() api, called layout_array.

Layout array is a list-of-lists, representing a 2-dimensional layout page. Each list is mapped to an entire row of the layout. A list contains chart numbers (starting from 1 to n), representing their exact position on the page. The input array is automatically scaled to fit the entire screen.

Example 1:#
layout_array = [[1]]

will result in a single chart occupying the entire page.

6b4d8246049c4400afeb77122320c572

Example 2:#
layout_array = [[1], [1], [2]]

will result chart 1 occupying the first two rows and chart 2 occupying the last row, roughly dividing the 2-chart layout to a 66%-33% ration.

8561be9b7c9f491989bfdd9cba563242

Example 3:#
[ ]:
d = cux_df.dashboard(charts_list, sidebar=widgets, layout_array=[
    [1, 1, 2, 2],
    [1, 1, 3, 4]
], theme=cuxfilter.themes.rapids_dark, title="Layout - Custom")

showcase-custom

Preset Layouts#

Preset layouts are applied using an input parameter to the .dashboard() api, called layout.

Single feature#

097723678f9d4b34bc978f31b7099fc0

[ ]:
d = cux_df.dashboard(charts_list, sidebar=widgets, layout=cuxfilter.layouts.single_feature, theme=cuxfilter.themes.rapids_dark, title="Layout - single feature")

showcase-single-feature

Feature and base#

5f989fa32d9a449a9db002a94c0e0687

[ ]:
d = cux_df.dashboard(charts_list, sidebar=widgets, layout=cuxfilter.layouts.feature_and_base, theme=cuxfilter.themes.rapids_dark, title="Layout - feature and base")

showcase-feature-and-base

Double feature#

4cf06df7140b4640a4cd7cfd409bdc63

[ ]:
d = cux_df.dashboard([chart0, chart1], sidebar=widgets, layout=cuxfilter.layouts.double_feature, theme=cuxfilter.themes.rapids_dark, title="Layout - double feature")

showcase-double-feature

Left feature right double#

088e0f86ba794875a2a36aa2b62c294f

[ ]:
d = cux_df.dashboard(charts_list[:4], sidebar=widgets, layout=cuxfilter.layouts.left_feature_right_double, theme=cuxfilter.themes.rapids_dark, title="Layout - left feature right double")

showcase-left-feature-right-double

Triple feature#

5cdd6289599a4bea95b1b083d4162900

[ ]:
d = cux_df.dashboard([chart1, chart2, chart3], sidebar=widgets, layout=cuxfilter.layouts.triple_feature, theme=cuxfilter.themes.rapids_dark, title="Layout - triple feature")

showcase-triple-feature

Feature and double base#

dca6d3d9db5146c9b138e0f8f9162185

[ ]:
d = cux_df.dashboard([chart0, chart2, chart3], sidebar=widgets, layout=cuxfilter.layouts.feature_and_double_base, theme=cuxfilter.themes.rapids_dark, title="Layout - feature and double base")

showcase-feature-and-double-base

Two by two#

ddc3bb3b2b20426fa1317bbb7de5b1f3

[ ]:
d = cux_df.dashboard([chart0, chart2, chart3, chart4], sidebar=widgets, layout=cuxfilter.layouts.two_by_two, theme=cuxfilter.themes.rapids_dark, title="Layout - two by two")

showcase-two-by-two

Feature and triple base#

1ad028551a6f4d429f0623b37dae6448

[ ]:
d = cux_df.dashboard(charts_list, sidebar=widgets, layout=cuxfilter.layouts.feature_and_triple_base, theme=cuxfilter.themes.rapids_dark, title="Layout - feature and triple base")

showcase-feature-and-triple-base

Feature and quad base#

dc8ced94810d457fad4a4d53c28c86c6

[ ]:
d = cux_df.dashboard(charts_list, sidebar=widgets, layout=cuxfilter.layouts.feature_and_quad_base, theme=cuxfilter.themes.rapids_dark, title="Layout - feature and quad base")

showcase-feature-and-quad-base

Feature and five edge#

494c1b841e5f40779a520d60619c689d

[ ]:
d = cux_df.dashboard(charts_list, sidebar=widgets, layout=cuxfilter.layouts.feature_and_five_edge, theme=cuxfilter.themes.rapids_dark, title="Layout - feature and five edge")

showcase-feature-and-five-base

Two by three#

9bd2780fc69d4f99a6df12aab26692ef

[ ]:
d = cux_df.dashboard([chart3, chart1, chart2, chart4, chart5, chart6], sidebar=widgets, layout=cuxfilter.layouts.two_by_three, theme=cuxfilter.themes.rapids_dark, title="Layout - two by three")

showcase-two-by-three

Double feature quad base#

403fe9c73db94325b3c801a10e2a0c8f

[ ]:
d = cux_df.dashboard(charts_list, sidebar=widgets, layout=cuxfilter.layouts.double_feature_quad_base,
                     theme=cuxfilter.themes.rapids_dark, title="Layout - double feature quad base")

showcase-double-feature-quad-base

Three by three#

e06dca07b20b477a8f74eed92919efa1

[ ]:
d = cux_df.dashboard(charts_list, sidebar=widgets, layout=cuxfilter.layouts.three_by_three,
                     theme=cuxfilter.themes.rapids_dark, title="Layout - three by three")

showcase-three-by-three

[ ]: