diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d420b3b9..691a17c6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -55,7 +55,7 @@ Portions adopted from https://github.com/pytorch/pytorch/blob/master/CONTRIBUTIN ### Adding support for new viz libraries -cuXfilter.py acts like a connector library and it is easy to add support for new libraries. The cuxfilter/charts/core directory has all the core chart classes which can be inherited and used to implement a few (viz related) functions and support dashboarding in cuXfilter directly. +cuxfilter.py acts like a connector library and it is easy to add support for new libraries. The cuxfilter/charts/core directory has all the core chart classes which can be inherited and used to implement a few (viz related) functions and support dashboarding in cuxfilter directly. You can see the examples to implement viz libraries in the bokeh and cudatashader directories. diff --git a/README.md b/README.md index 9db1ab87..a62fefd0 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,29 @@ -#
This is a short introduction to the cuXfilter.py library, mostly going over the basic usage and features provided as a quick summary.
-cuXfilter is inspired from the Crossfilter library, which is a fast, browser-based filtering mechanism across multiple dimensions and offers features do groupby operations on top of the dimensions. One of the major limitations of using Crossfilter is that it keeps data in-memory on a client-side browser, making it inefficient for processing large datasets.
-cuXfilter solves the issues by leveraging the power of the rapids.ai stack, mainly cudf. The data is maintained in a gpu as a GPU DataFrame and operations like groupby aggregations, sorting and querying are done on the gpu itself, only returning the result as the output to the charts.
-cuXfilter acts as a connector
library, which provides the connections between different visualization libraries and a GPU dataframe without much hassle. This also allows the user to use charts from different libraries in a single dashboard, while also providing the interaction.
cuXfilter uses data-tiles on the front-end, which are precomputed aggregations, for all possible interactions for a single chart, for updating all remaining charts in a dashboard. data-tiles are just smartly computed groupbys, and generally take around 250ms per chart for a 100M row dataset(do the rest of the math!!!!, ps: its fast!). Once it’s downloaded, interactions are seamless, and well, realtime.
+This is a short introduction to the cuxfilter.py library, mostly going over the basic usage and features provided as a quick summary.
+cuxfilter is inspired from the Crossfilter library, which is a fast, browser-based filtering mechanism across multiple dimensions and offers features do groupby operations on top of the dimensions. One of the major limitations of using Crossfilter is that it keeps data in-memory on a client-side browser, making it inefficient for processing large datasets.
+cuxfilter solves the issues by leveraging the power of the rapids.ai stack, mainly cudf. The data is maintained in a gpu as a GPU DataFrame and operations like groupby aggregations, sorting and querying are done on the gpu itself, only returning the result as the output to the charts.
+cuxfilter acts as a connector
library, which provides the connections between different visualization libraries and a GPU dataframe without much hassle. This also allows the user to use charts from different libraries in a single dashboard, while also providing the interaction.
cuxfilter uses data-tiles on the front-end, which are precomputed aggregations, for all possible interactions for a single chart, for updating all remaining charts in a dashboard. data-tiles are just smartly computed groupbys, and generally take around 250ms per chart for a 100M row dataset(do the rest of the math!!!!, ps: its fast!). Once it’s downloaded, interactions are seamless, and well, realtime.
-cuXfilter has following usable modules
+cuxfilter has following usable modules
-
- -
cuXfilter.DataFrame
- -
cuXfilter.DashBoard
- -
cuXfilter.charts
- +
cuXfilter.layouts
- +
cuxfilter.DataFrame
- +
cuxfilter.DashBoard
- +
cuxfilter.charts
cuxfilter.layouts
@@ -423,7 +423,7 @@1. Import the required modules
-from cuXfilter import charts, DataFrame, themes, layouts +from cuxfilter import charts, DataFrame, themes, layouts
-cuXfilter can read arrow files off disk, or an inmemory cudf dataframe
+cuxfilter can read arrow files off disk, or an inmemory cudf dataframe
@@ -3768,7 +3768,7 @@[6]:-from cuXfilter.assets.custom_tiles import get_provider, Vendors +from cuxfilter.assets.custom_tiles import get_provider, Vendors5. View the dashboard
- +
[title] Markdown(str)\\n[chart1] Column(sizing_mode='scale_both', width=1600)\\n [0] Bokeh(Figure)\\n[chart2] Column(sizing_mode='scale_both', width=1600)\\n [0] Bokeh(Figure)\\n [1] RangeSlider(end=0.8056737184524536, sizing_mode='scale_width', start=0.15787923336029053, step=0.012955889701843262, value=(0.15787923336029053, ..., width=1600)\\n[widgets] Column\\n [0] Column(css_classes=['non-handle-temp'], sizing_mode='scale_both')\\n [0] FloatSlider(bar_color='#8735fb', end=146594623, name='Data Points selected', sizing_mode='scale_both', start=0, value=146594623, width=280)\\n [1] Select(css_classes=['custom-dropdown'], height=50, name='dti', options={'l_1.0': 1, 'l_2.0': 2, ...}, sizing_mode='scale_both', width=280)\\n [2] RangeSlider(end=850.0, name='borrower_credit_score', sizing_mode='scale_both', start=330.0, step=1, value=(330.0, 850.0), width=280)\\n
\"},\"id\":\"1085\",\"type\":\"Div\"},{\"attributes\":{\"code\":\"\\nif (!window.PyViz) {\\n return;\\n}\\nvar receiver = window.PyViz.receivers['1084'];\\nvar events = receiver ? receiver._partial.content.events : [];\\nfor (var event of events) {\\n if ((event.kind == 'ModelChanged') && (event.attr == 'aspect_ratio') &&\\n (cb_obj.id == event.model.id) &&\\n (cb_obj['aspect_ratio'] == event.new)) {\\n events.pop(events.indexOf(event))\\n return;\\n }\\n}\\n\\ndata = {aspect_ratio: cb_obj['aspect_ratio'], 'id': cb_obj.id};\\n\\nfunction unique_events(events) {\\n // Processes the event queue ignoring duplicate events\\n // of the same type\\n var unique = [];\\n var unique_events = [];\\n for (var i=0; i[title] Markdown(str)\\n[chart1] Column(sizing_mode='scale_both', width=1600)\\n [0] Bokeh(Figure)\\n[chart2] Column(sizing_mode='scale_both', width=1600)\\n [0] Bokeh(Figure)\\n [1] RangeSlider(end=0.8056737184524536, sizing_mode='scale_width', start=0.15787923336029053, step=0.012955889701843262, value=(0.15787923336029053, ..., width=1600)\\n[widgets] Column\\n [0] Column(css_classes=['non-handle-temp'], sizing_mode='scale_both')\\n [0] FloatSlider(bar_color='#8735fb', end=146594623, name='Data Points selected', sizing_mode='scale_both', start=0, value=146594623, width=280)\\n [1] Select(css_classes=['custom-dropdown'], height=50, name='dti', options={'l_1.0': 1, 'l_2.0': 2, ...}, sizing_mode='scale_both', width=280)\\n [2] RangeSlider(end=850.0, name='borrower_credit_score', sizing_mode='scale_both', start=330.0, step=1, value=(330.0, 850.0), width=280)\\n
\"},\"id\":\"1085\",\"type\":\"Div\"},{\"attributes\":{\"code\":\"\\nif (!window.PyViz) {\\n return;\\n}\\nvar receiver = window.PyViz.receivers['1084'];\\nvar events = receiver ? receiver._partial.content.events : [];\\nfor (var event of events) {\\n if ((event.kind == 'ModelChanged') && (event.attr == 'aspect_ratio') &&\\n (cb_obj.id == event.model.id) &&\\n (cb_obj['aspect_ratio'] == event.new)) {\\n events.pop(events.indexOf(event))\\n return;\\n }\\n}\\n\\ndata = {aspect_ratio: cb_obj['aspect_ratio'], 'id': cb_obj.id};\\n\\nfunction unique_events(events) {\\n // Processes the event queue ignoring duplicate events\\n // of the same type\\n var unique = [];\\n var unique_events = [];\\n for (var i=0; i[title] Markdown(str)\\n[chart1] Column(sizing_mode='scale_both', width=900)\\n [0] Bokeh(Figure)\\n[chart2] Column(sizing_mode='scale_both', width=900)\\n [0] Bokeh(Figure)\\n [1] RangeSlider(end=9, sizing_mode='scale_width', step=1, value=(0, 9), width=900)\\n[widgets] Column\\n [0] Column(css_classes=['non-handle-temp'], sizing_mode='scale_both')\\n [0] FloatSlider(bar_color='#5742f5', end=1316095, name='Data Points selected', sizing_mode='scale_both', start=0, value=1316095, width=280)\\n
\"},\"id\":\"1354\",\"type\":\"Div\"},{\"attributes\":{\"code\":\"\\nif (!window.PyViz) {\\n return;\\n}\\nvar receiver = window.PyViz.receivers['1353'];\\nvar events = receiver ? receiver._partial.content.events : [];\\nfor (var event of events) {\\n if ((event.kind == 'ModelChanged') && (event.attr == 'clicks') &&\\n (cb_obj.id == event.model.id) &&\\n (cb_obj['clicks'] == event.new)) {\\n events.pop(events.indexOf(event))\\n return;\\n }\\n}\\n\\ndata = {clicks: cb_obj['clicks'], 'id': cb_obj.id};\\n\\nfunction unique_events(events) {\\n // Processes the event queue ignoring duplicate events\\n // of the same type\\n var unique = [];\\n var unique_events = [];\\n for (var i=0; i[title] Markdown(str)\\n[chart1] Column(sizing_mode='scale_both', width=900)\\n [0] Bokeh(Figure)\\n[chart2] Column(sizing_mode='scale_both', width=900)\\n [0] Bokeh(Figure)\\n [1] RangeSlider(end=9, sizing_mode='scale_width', step=1, value=(0, 9), width=900)\\n[widgets] Column\\n [0] Column(css_classes=['non-handle-temp'], sizing_mode='scale_both')\\n [0] FloatSlider(bar_color='#5742f5', end=1316095, name='Data Points selected', sizing_mode='scale_both', start=0, value=1316095, width=280)\\n
\"},\"id\":\"1354\",\"type\":\"Div\"},{\"attributes\":{\"code\":\"\\nif (!window.PyViz) {\\n return;\\n}\\nvar receiver = window.PyViz.receivers['1353'];\\nvar events = receiver ? receiver._partial.content.events : [];\\nfor (var event of events) {\\n if ((event.kind == 'ModelChanged') && (event.attr == 'clicks') &&\\n (cb_obj.id == event.model.id) &&\\n (cb_obj['clicks'] == event.new)) {\\n events.pop(events.indexOf(event))\\n return;\\n }\\n}\\n\\ndata = {clicks: cb_obj['clicks'], 'id': cb_obj.id};\\n\\nfunction unique_events(events) {\\n // Processes the event queue ignoring duplicate events\\n // of the same type\\n var unique = [];\\n var unique_events = [];\\n for (var i=0; i[title] Markdown(str)\\n[chart1] Column(sizing_mode='scale_both', width=1600)\\n [0] Bokeh(Figure)\\n[chart2] Column(sizing_mode='scale_both', width=1600)\\n [0] Bokeh(Figure)\\n [1] RangeSlider(end=2017, sizing_mode='scale_width', start=2001, step=1, value=(2001, 2017), width=1600)\\n[widgets] Column\\n [0] Column(css_classes=['non-handle-temp'], sizing_mode='scale_both')\\n [0] FloatSlider(bar_color='#5742f5', end=1296221, name='Data Points selected', sizing_mode='scale_both', start=0, value=1296221, width=280)\\n [1] MultiSelect(css_classes=['custom-dropdown'], height=200, name='DAY_WEEK', options={'Sunday': 1, ...}, sizing_mode='scale_both', value=[''], width=280)\\n
\"},\"id\":\"1354\",\"type\":\"Div\"},{\"attributes\":{\"code\":\"\\nif (!window.PyViz) {\\n return;\\n}\\nvar receiver = window.PyViz.receivers['1353'];\\nvar events = receiver ? receiver._partial.content.events : [];\\nfor (var event of events) {\\n if ((event.kind == 'ModelChanged') && (event.attr == 'clicks') &&\\n (cb_obj.id == event.model.id) &&\\n (cb_obj['clicks'] == event.new)) {\\n events.pop(events.indexOf(event))\\n return;\\n }\\n}\\n\\ndata = {clicks: cb_obj['clicks'], 'id': cb_obj.id};\\n\\nfunction unique_events(events) {\\n // Processes the event queue ignoring duplicate events\\n // of the same type\\n var unique = [];\\n var unique_events = [];\\n for (var i=0; i[title] Markdown(str)\\n[chart1] Column(sizing_mode='scale_both', width=1600)\\n [0] Bokeh(Figure)\\n[chart2] Column(sizing_mode='scale_both', width=1600)\\n [0] Bokeh(Figure)\\n [1] RangeSlider(end=2017, sizing_mode='scale_width', start=2001, step=1, value=(2001, 2017), width=1600)\\n[widgets] Column\\n [0] Column(css_classes=['non-handle-temp'], sizing_mode='scale_both')\\n [0] FloatSlider(bar_color='#5742f5', end=1296221, name='Data Points selected', sizing_mode='scale_both', start=0, value=1296221, width=280)\\n [1] MultiSelect(css_classes=['custom-dropdown'], height=200, name='DAY_WEEK', options={'Sunday': 1, ...}, sizing_mode='scale_both', value=[''], width=280)\\n
\"},\"id\":\"1354\",\"type\":\"Div\"},{\"attributes\":{\"code\":\"\\nif (!window.PyViz) {\\n return;\\n}\\nvar receiver = window.PyViz.receivers['1353'];\\nvar events = receiver ? receiver._partial.content.events : [];\\nfor (var event of events) {\\n if ((event.kind == 'ModelChanged') && (event.attr == 'clicks') &&\\n (cb_obj.id == event.model.id) &&\\n (cb_obj['clicks'] == event.new)) {\\n events.pop(events.indexOf(event))\\n return;\\n }\\n}\\n\\ndata = {clicks: cb_obj['clicks'], 'id': cb_obj.id};\\n\\nfunction unique_events(events) {\\n // Processes the event queue ignoring duplicate events\\n // of the same type\\n var unique = [];\\n var unique_events = [];\\n for (var i=0; ibokeh.
bar
(x, y=None, data_points=100, add_interaction=True, aggregate_fn='count', width=400, height=400, step_size=None, step_size_type=<class 'int'>, **library_specific_params)¶bokeh.
bar
(x, y=None, data_points=100, add_interaction=True, aggregate_fn='count', width=400, height=400, step_size=None, step_size_type=<class 'int'>, **library_specific_params)¶import cudf
-from cuXfilter import charts, DataFrame
+from cuxfilter import charts, DataFrame
cux_df = DataFrame.from_dataframe(cudf.DataFrame({'key': [0, 1, 2, 3, 4], 'val':[float(i + 10) for i in range(5)]}))
bar_chart_1 = charts.bokeh.bar('key', 'val', data_points=5, add_interaction=False)
@@ -7493,8 +7493,8 @@ Example
Line Chart¶
--
-
bokeh.
line
(x, y=None, data_points=100, add_interaction=True, aggregate_fn='count', width=400, height=400, step_size=None, step_size_type=<class 'int'>, **library_specific_params)¶
+-
+
bokeh.
line
(x, y=None, data_points=100, add_interaction=True, aggregate_fn='count', width=400, height=400, step_size=None, step_size_type=<class 'int'>, **library_specific_params)¶
- Parameters
@@ -7534,7 +7534,7 @@ Line Chart¶
import cudf
-from cuXfilter import charts, DataFrame
+from cuxfilter import charts, DataFrame
cux_df = DataFrame.from_dataframe(cudf.DataFrame({'key': [0, 1, 2, 3, 4], 'val':[float(i + 10) for i in range(5)]}))
line_chart_1 = charts.bokeh.line('key', 'val', data_points=5, add_interaction=False)
@@ -9087,8 +9087,8 @@ Example
Choropleth Chart¶
--
-
bokeh.
choropleth
(x, y=None, data_points=100, add_interaction=True, aggregate_fn='count', width=800, height=400, step_size=None, step_size_type=<class 'int'>, geoJSONSource=None, geoJSONProperty=None, geo_color_palette=None, tile_provider=None, **library_specific_params)¶
+-
+
bokeh.
choropleth
(x, y=None, data_points=100, add_interaction=True, aggregate_fn='count', width=800, height=400, step_size=None, step_size_type=<class 'int'>, geoJSONSource=None, geoJSONProperty=None, geo_color_palette=None, tile_provider=None, **library_specific_params)¶
- Parameters
@@ -9119,7 +9119,7 @@ Choropleth Chart¶
import cudf
-from cuXfilter import charts, DataFrame
+from cuxfilter import charts, DataFrame
cux_df = DataFrame.from_dataframe(cudf.DataFrame({'states': [i for i in range(57)], 'val':[float(i + 10) for i in range(57)]}))
choropleth_chart_1 = charts.bokeh.choropleth(x = 'states', y = 'val', aggregate_fn='mean', data_points=57, add_interaction=False,
diff --git a/docs/charts/charts.html b/docs/charts/charts.html
index 5334982e..680c4bbb 100644
--- a/docs/charts/charts.html
+++ b/docs/charts/charts.html
@@ -8,7 +8,7 @@
- Charts — cuXfilter 0.2 documentation
+ Charts — cuxfilter 0.2 documentation
@@ -40,7 +40,7 @@
-
+
@@ -54,7 +54,7 @@
- cuXfilter
+ cuxfilter
@@ -88,7 +88,7 @@
- Installation
- API Reference
-- 10 minutes to cuXfilter
+- 10 minutes to cuxfilter
- Charts
- Bokeh Charts
- CuDataShader Charts
@@ -112,7 +112,7 @@
@@ -209,7 +209,7 @@ ChartsNext
- Previous
+ Previous
diff --git a/docs/charts/cudatashader_charts.html b/docs/charts/cudatashader_charts.html
index 26f975d1..ecc383fa 100644
--- a/docs/charts/cudatashader_charts.html
+++ b/docs/charts/cudatashader_charts.html
@@ -8,7 +8,7 @@
- CuDataShader Charts — cuXfilter 0.2 documentation
+ CuDataShader Charts — cuxfilter 0.2 documentation
@@ -54,7 +54,7 @@
- cuXfilter
+ cuxfilter
@@ -88,7 +88,7 @@
- Installation
- API Reference
-- 10 minutes to cuXfilter
+- 10 minutes to cuxfilter
- Charts
- Bokeh Charts
- CuDataShader Charts
@@ -134,7 +134,7 @@
@@ -215,8 +215,8 @@ CuDataShader Charts
line chart¶
--
-
cudatashader.
line
(x, y, data_points=100, add_interaction=True, pixel_shade_type='linear', color=None, step_size=None, step_size_type=<class 'int'>, width=800, height=400, **library_specific_params)¶
+-
+
cudatashader.
line
(x, y, data_points=100, add_interaction=True, pixel_shade_type='linear', color=None, step_size=None, step_size_type=<class 'int'>, width=800, height=400, **library_specific_params)¶
- Parameters
@@ -250,7 +250,7 @@ line chartReturns
- A cudashader scatter plot.
-- Type cuXfilter.charts.cudatashader.custom_extensions.InteractiveImage
+- Type cuxfilter.charts.cudatashader.custom_extensions.InteractiveImage
@@ -259,7 +259,7 @@ line chart
Example¶
-from cuXfilter import charts, DataFrame
+from cuxfilter import charts, DataFrame
import numpy as np
import cudf
import random
@@ -7510,8 +7510,8 @@ Example
Scatter_geo chart¶
--
-
cudatashader.
scatter_geo
(x, y=None, x_range=None, y_range=None, add_interaction=True, color_palette=None, aggregate_col=None, aggregate_fn='count', point_size=1, point_shape='circle', pixel_shade_type='eq_hist', pixel_density=0.5, pixel_spread='dynspread', width=800, height=400, tile_provider='CARTODBPOSITRON', **library_specific_params)¶
+-
+
cudatashader.
scatter_geo
(x, y=None, x_range=None, y_range=None, add_interaction=True, color_palette=None, aggregate_col=None, aggregate_fn='count', point_size=1, point_shape='circle', pixel_shade_type='eq_hist', pixel_density=0.5, pixel_spread='dynspread', width=800, height=400, tile_provider='CARTODBPOSITRON', **library_specific_params)¶
- Parameters
@@ -7560,7 +7560,7 @@ Scatter_geo chartReturns
- A cudashader geo-scatter plot.
-- Type cuXfilter.charts.cudatashader.custom_extensions.InteractiveImage
+- Type cuxfilter.charts.cudatashader.custom_extensions.InteractiveImage
@@ -7569,7 +7569,7 @@ Scatter_geo chart
Example¶
-from cuXfilter import charts, DataFrame
+from cuxfilter import charts, DataFrame
import cudf
import random
@@ -9125,8 +9125,8 @@ Example
Scatter chart¶
--
-
cudatashader.
scatter
(x, y, x_range=None, y_range=None, add_interaction=True, color_palette=None, aggregate_col=None, aggregate_fn='count', point_size=1, point_shape='circle', pixel_shade_type='eq_hist', pixel_density=0.5, pixel_spread='dynspread', width=800, height=400, **library_specific_params)¶
+-
+
cudatashader.
scatter
(x, y, x_range=None, y_range=None, add_interaction=True, color_palette=None, aggregate_col=None, aggregate_fn='count', point_size=1, point_shape='circle', pixel_shade_type='eq_hist', pixel_density=0.5, pixel_spread='dynspread', width=800, height=400, **library_specific_params)¶
- Parameters
@@ -9172,7 +9172,7 @@ Scatter chartReturns
- A cudashader scatter plot.
-- Type cuXfilter.charts.cudatashader.custom_extensions.InteractiveImage
+- Type cuxfilter.charts.cudatashader.custom_extensions.InteractiveImage
@@ -9181,7 +9181,7 @@ Scatter chart
Example¶
-from cuXfilter import charts, DataFrame
+from cuxfilter import charts, DataFrame
import cudf
import random
@@ -10737,8 +10737,8 @@ Example
Stacked_Lines chart¶
--
-
cudatashader.
stacked_lines
(x, y, data_points=100, add_interaction=True, colors=[], step_size=None, step_size_type=<class 'int'>, width=800, height=400, **library_specific_params)¶
+-
+
cudatashader.
stacked_lines
(x, y, data_points=100, add_interaction=True, colors=[], step_size=None, step_size_type=<class 'int'>, width=800, height=400, **library_specific_params)¶
stacked lines chart
- Parameters
@@ -10765,7 +10765,7 @@ Stacked_Lines chartReturns
- A cudashader stacked_lines plot.
-- Type cuXfilter.charts.cudatashader.custom_extensions.InteractiveImage
+- Type cuxfilter.charts.cudatashader.custom_extensions.InteractiveImage
@@ -10774,12 +10774,12 @@ Stacked_Lines chart
Example¶
-from cuXfilter.sampledata import signals_data
-import cuXfilter
+from cuxfilter.sampledata import signals_data
+import cuxfilter
-cux_df = cuXfilter.DataFrame.from_dataframe(signals_data)
+cux_df = cuxfilter.DataFrame.from_dataframe(signals_data)
-stacked_lines_chart = cuXfilter.charts.cudatashader.stacked_lines(x='Time', y=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'x', 'y', 'z'],
+stacked_lines_chart = cuxfilter.charts.cudatashader.stacked_lines(x='Time', y=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'x', 'y', 'z'],
colors = ["red", "grey", "black", "purple", "pink",
"yellow", "brown", "green", "orange", "blue"]
)
@@ -12332,8 +12332,8 @@ Example
Heat Map chart¶
--
-
cudatashader.
heatmap
(x, y, x_range=None, y_range=None, add_interaction=True, color_palette=None, aggregate_col=None, aggregate_fn='mean', point_size=10, point_shape='rect_vertical', width=800, height=400, **library_specific_params)¶
+-
+
cudatashader.
heatmap
(x, y, x_range=None, y_range=None, add_interaction=True, color_palette=None, aggregate_col=None, aggregate_fn='mean', point_size=10, point_shape='rect_vertical', width=800, height=400, **library_specific_params)¶
Heatmap using default cudatashader.scatter plot with slight modifications.
Added for better defaults. In theory, scatter directly can be used
to generate the same.
@@ -12378,7 +12378,7 @@ Heat Map chartReturns
- A cudashader heatmap (scatter object).
-- Type cuXfilter.charts.cudatashader.custom_extensions.InteractiveImage
+- Type cuxfilter.charts.cudatashader.custom_extensions.InteractiveImage
@@ -12387,8 +12387,8 @@ Heat Map chart
Example¶
-from cuXfilter import charts, layouts, themes, DataFrame
-from cuXfilter.sampledata import unemployment_data
+from cuxfilter import charts, layouts, themes, DataFrame
+from cuxfilter.sampledata import unemployment_data
cux_df = DataFrame.from_dataframe(unemployment_data)
diff --git a/docs/charts/panel_widgets.html b/docs/charts/panel_widgets.html
index 41431e16..de46adf1 100644
--- a/docs/charts/panel_widgets.html
+++ b/docs/charts/panel_widgets.html
@@ -8,7 +8,7 @@
- Panel Widgets — cuXfilter 0.2 documentation
+ Panel Widgets — cuxfilter 0.2 documentation
@@ -54,7 +54,7 @@
- cuXfilter
+ cuxfilter
@@ -88,7 +88,7 @@
- Installation
- API Reference
-- 10 minutes to cuXfilter
+- 10 minutes to cuxfilter
- Charts
- Bokeh Charts
- CuDataShader Charts
@@ -134,7 +134,7 @@
@@ -215,9 +215,9 @@ Panel Widgets
Range slider¶
--
-
panel_widgets.
range_slider
(x, width=400, height=20, data_points=100, step_size=1, step_size_type=<class 'int'>, **params)¶
-Widget in the navbar of the cuXfilter dashboard.
+-
+
panel_widgets.
range_slider
(x, width=400, height=20, data_points=100, step_size=1, step_size_type=<class 'int'>, **params)¶
+Widget in the navbar of the cuxfilter dashboard.
Type: Range Slider
- Parameters
@@ -241,7 +241,7 @@ Range slider¶
import cudf
-from cuXfilter import charts, DataFrame
+from cuxfilter import charts, DataFrame
cux_df = DataFrame.from_dataframe(cudf.DataFrame({'key': [0, 1, 2, 3, 4], 'val':[float(i + 10) for i in range(5)]}))
range_slider = charts.panel_widgets.range_slider('key')
@@ -7486,9 +7486,9 @@ Example
Float slider¶
--
-
panel_widgets.
float_slider
(x, width=400, height=40, data_points=100, step_size=None, **params)¶
-Widget in the navbar of the cuXfilter dashboard.
+-
+
panel_widgets.
float_slider
(x, width=400, height=40, data_points=100, step_size=None, **params)¶
+Widget in the navbar of the cuxfilter dashboard.
Type: Float Slider
- Parameters
@@ -7511,7 +7511,7 @@ Float slider¶
import cudf
-from cuXfilter import charts, DataFrame
+from cuxfilter import charts, DataFrame
cux_df = DataFrame.from_dataframe(cudf.DataFrame({'key': [0, 0.5, 1, 1.5, 2], 'val':[float(i + 10) for i in range(5)]}))
float_slider = charts.panel_widgets.float_slider('key', step_size=0.5)
@@ -9064,9 +9064,9 @@ Example
Int slider¶
--
-
panel_widgets.
int_slider
(x, width=400, height=40, data_points=100, step_size=1, **params)¶
-Widget in the navbar of the cuXfilter dashboard.
+-
+
panel_widgets.
int_slider
(x, width=400, height=40, data_points=100, step_size=1, **params)¶
+Widget in the navbar of the cuxfilter dashboard.
Type: Int Slider
- Parameters
@@ -9089,7 +9089,7 @@ Int slider¶
import cudf
-from cuXfilter import charts, DataFrame
+from cuxfilter import charts, DataFrame
cux_df = DataFrame.from_dataframe(cudf.DataFrame({'key': [0, 1, 2, 3, 4], 'val':[float(i + 10) for i in range(5)]}))
int_slider = charts.panel_widgets.int_slider('val')
@@ -10642,9 +10642,9 @@ Example
Dropdown¶
--
-
panel_widgets.
drop_down
(x, width=400, height=50, **params)¶
-Widget in the navbar of the cuXfilter dashboard.
+-
+
panel_widgets.
drop_down
(x, width=400, height=50, **params)¶
+Widget in the navbar of the cuxfilter dashboard.
Type: drop_down
- Parameters
@@ -10666,7 +10666,7 @@ Dropdown¶
import cudf
-from cuXfilter import charts, DataFrame
+from cuxfilter import charts, DataFrame
cux_df = DataFrame.from_dataframe(cudf.DataFrame({'key': [0, 1, 2, 3, 4], 'val':[float(i + 10) for i in range(5)]}))
drop_down = charts.panel_widgets.drop_down('val')
@@ -12219,9 +12219,9 @@ Example
Multiselect¶
--
-
panel_widgets.
multi_select
(x, width=400, height=200, **params)¶
-Widget in the navbar of the cuXfilter dashboard.
+-
+
panel_widgets.
multi_select
(x, width=400, height=200, **params)¶
+Widget in the navbar of the cuxfilter dashboard.
Type: multi_select
- Parameters
@@ -12243,7 +12243,7 @@ Multiselect¶
import cudf
-from cuXfilter import charts, DataFrame
+from cuxfilter import charts, DataFrame
cux_df = DataFrame.from_dataframe(cudf.DataFrame({'key': [0, 1, 2, 3, 4], 'val':[float(i + 10) for i in range(5)]}))
multi_select = charts.panel_widgets.multi_select('val')
diff --git a/docs/dataframe.html b/docs/dataframe.html
index 3536b45f..0455c524 100644
--- a/docs/dataframe.html
+++ b/docs/dataframe.html
@@ -8,7 +8,7 @@
- API Reference — cuXfilter 0.2 documentation
+ API Reference — cuxfilter 0.2 documentation
@@ -39,7 +39,7 @@
-
+
@@ -54,7 +54,7 @@
- cuXfilter
+ cuxfilter
@@ -92,7 +92,7 @@
- DashBoard
-- 10 minutes to cuXfilter
+- 10 minutes to cuxfilter
- Charts
- Layouts
- Themes
@@ -111,7 +111,7 @@
@@ -190,9 +190,9 @@ API Reference
DataFrame¶
--
-class
cuXfilter.dataframe.
DataFrame
(data)¶
-A cuXfilter GPU DataFrame object
+-
+class
cuxfilter.dataframe.
DataFrame
(data)¶
+A cuxfilter GPU DataFrame object
- Attributes
@@ -207,27 +207,27 @@ DataFrame
-dashboard
(self, charts[, layout, theme, …])
-Creates a cuXfilter.DashBoard object
+dashboard
(self, charts[, layout, theme, …])
+Creates a cuxfilter.DashBoard object
-from_arrow
(dataframe_location)
-read an arrow file from disk as cuXfilter.DataFrame
+from_arrow
(dataframe_location)
+read an arrow file from disk as cuxfilter.DataFrame
-from_dataframe
(dataframe)
-create a cuXfilter.DataFrame from cudf.DataFrame (zero-copy reference)
+from_dataframe
(dataframe)
+create a cuxfilter.DataFrame from cudf.DataFrame (zero-copy reference)
--
-
dashboard
(self, charts:list, layout=<class 'cuXfilter.layouts.layouts.Layout0'>, theme=<class 'cuXfilter.themes.light.Theme'>, title='Dashboard', data_size_widget=True, warnings=False)¶
-Creates a cuXfilter.DashBoard object
+-
+
dashboard
(self, charts:list, layout=<class 'cuxfilter.layouts.layouts.Layout0'>, theme=<class 'cuxfilter.themes.light.Theme'>, title='Dashboard', data_size_widget=True, warnings=False)¶
+Creates a cuxfilter.DashBoard object
- Parameters
-- charts: list
list of cuXfilter.charts
+- charts: list
list of cuxfilter.charts
-- layout: cuXfilter.layouts
+- layout: cuxfilter.layouts
- title: str
title of the dashboard, default “Dashboard”
- data_size_widget: boolean
flag to determine whether to diplay the current datapoints
@@ -240,21 +240,21 @@
DataFrameReturns
-- cuXfilter.DashBoard object
+- cuxfilter.DashBoard object
Examples
>>> import cudf
->>> import cuXfilter
->>> from cuXfilter import charts
+>>> import cuxfilter
+>>> from cuxfilter import charts
>>> df = cudf.DataFrame(
>>> {
>>> 'key': [0, 1, 2, 3, 4],
>>> 'val':[float(i + 10) for i in range(5)]
>>> }
>>> )
->>> cux_df = cuXfilter.DataFrame.from_dataframe(df)
+>>> cux_df = cuxfilter.DataFrame.from_dataframe(df)
>>> line_chart_1 = charts.bokeh.line(
>>> 'key', 'val', data_points=5, add_interaction=False
>>> )
@@ -267,9 +267,9 @@ DataFrame
--
-classmethod
from_arrow
(dataframe_location)¶
-read an arrow file from disk as cuXfilter.DataFrame
+-
+classmethod
from_arrow
(dataframe_location)¶
+read an arrow file from disk as cuxfilter.DataFrame
- Parameters
@@ -278,14 +278,14 @@ DataFrameReturns
-- cuXfilter.DataFrame object
+- cuxfilter.DataFrame object
Examples
Read dataframe as an arrow file from disk
->>> import cuXfilter
->>> cux_df = cuXfilter.DataFrame.from_arrow(
+>>> import cuxfilter
+>>> cux_df = cuxfilter.DataFrame.from_arrow(
'./location/of/dataframe.arrow'
)
@@ -293,9 +293,9 @@ DataFrame
--
-classmethod
from_dataframe
(dataframe)¶
-create a cuXfilter.DataFrame from cudf.DataFrame (zero-copy reference)
+-
+classmethod
from_dataframe
(dataframe)¶
+create a cuxfilter.DataFrame from cudf.DataFrame (zero-copy reference)
- Parameters
@@ -304,13 +304,13 @@ DataFrameReturns
-- cuXfilter.DataFrame object
+- cuxfilter.DataFrame object
Examples
Read dataframe from a cudf.DataFrame
->>> import cuXfilter
+>>> import cuxfilter
>>> import cudf
>>> cudf_df = cudf.DataFrame(
>>> {
@@ -318,7 +318,7 @@ DataFrame>>> 'val':[float(i + 10) for i in range(5)]
>>> }
>>> )
->>> cux_df = cuXfilter.DataFrame.from_dataframe(cudf_df)
+>>> cux_df = cuxfilter.DataFrame.from_dataframe(cudf_df)
@@ -329,19 +329,19 @@ DataFrame
DashBoard¶
--
-class
cuXfilter.dashboard.
DashBoard
(charts=[], data=None, layout=<class 'cuXfilter.layouts.layouts.Layout0'>, theme=<class 'cuXfilter.themes.light.Theme'>, title='Dashboard', data_size_widget=True, warnings=False)¶
-A cuXfilter GPU DashBoard object.
+
-
+class
cuxfilter.dashboard.
DashBoard
(charts=[], data=None, layout=<class 'cuxfilter.layouts.layouts.Layout0'>, theme=<class 'cuxfilter.themes.light.Theme'>, title='Dashboard', data_size_widget=True, warnings=False)¶
+A cuxfilter GPU DashBoard object.
Examples
——–
Create a dashboard
>>> import cudf
->>> import cuXfilter
->>> from cuXfilter import charts
+>>> import cuxfilter
+>>> from cuxfilter import charts
>>> df = cudf.DataFrame(
>>> {'key': [0, 1, 2, 3, 4], 'val':[float(i + 10) for i in range(5)]}
>>> )
->>> cux_df = cuXfilter.DataFrame.from_dataframe(df)
+>>> cux_df = cuxfilter.DataFrame.from_dataframe(df)
>>> line_chart_1 = charts.bokeh.line(
>>> 'key', 'val', data_points=5, add_interaction=False
>>> )
@@ -350,7 +350,7 @@ DashBoard>>> )
>>> d = cux_df.dashboard([line_chart_1, line_chart_2])
>>> d
-`cuXfilter DashBoard
+`cuxfilter DashBoard
[title] Markdown(str)
[chart1] Column(sizing_mode='scale_both', width=1600)
[0] Bokeh(Figure)
@@ -361,13 +361,13 @@ DashBoard
- Attributes
-charts
Charts in the dashboard as a dictionary.
+charts
Charts in the dashboard as a dictionary.
-data_size_widget
Data_size_widget flag.
+data_size_widget
Data_size_widget flag.
-title
Title of the dashboard.
+title
Title of the dashboard.
-warnings
Layout warnings flag.
+warnings
Layout warnings flag.
@@ -379,47 +379,47 @@ DashBoard
-add_charts
(self[, charts])
+add_charts
(self[, charts])
Adding more charts to the dashboard, after it has been initialized.
-app
(self[, url])
+app
(self[, url])
Run the dashboard with a bokeh backend server within the notebook.
-export
(self)
+export
(self)
Export the cudf.DataFrame based on the current filtered state of the dashboard.
-preview
(self)
+preview
(self)
Preview(Async) all the charts in a jupyter cell, non interactive(no backend server).
-show
(self[, url, threaded])
+show
(self[, url, threaded])
Run the dashboard with a bokeh backend server within the notebook.
--
-
add_charts
(self, charts=[])¶
+-
+
add_charts
(self, charts=[])¶
Adding more charts to the dashboard, after it has been initialized.
Parameters
———-
charts: list
-list of cuXfilter.charts objects
+list of cuxfilter.charts objects
Notes
After adding the charts, re-run the dashboard.app()
or dashboard.show() cell to see the updated charts.
Examples
>>> import cudf
->>> import cuXfilter
->>> from cuXfilter import charts
+>>> import cuxfilter
+>>> from cuxfilter import charts
>>> df = cudf.DataFrame(
>>> {
>>> 'key': [0, 1, 2, 3, 4],
>>> 'val':[float(i + 10) for i in range(5)]
>>> }
>>> )
->>> cux_df = cuXfilter.DataFrame.from_dataframe(df)
+>>> cux_df = cuxfilter.DataFrame.from_dataframe(df)
>>> line_chart_1 = charts.bokeh.line(
>>> 'key', 'val', data_points=5, add_interaction=False
>>> )
@@ -433,8 +433,8 @@ DashBoard
--
-
app
(self, url='', port:int=0)¶
+-
+
app
(self, url='', port:int=0)¶
Run the dashboard with a bokeh backend server within the notebook.
Parameters
———-
@@ -451,15 +451,15 @@
DashBoardExamples
>>> import cudf
->>> import cuXfilter
->>> from cuXfilter import charts
+>>> import cuxfilter
+>>> from cuxfilter import charts
>>> df = cudf.DataFrame(
>>> {
>>> 'key': [0, 1, 2, 3, 4],
>>> 'val':[float(i + 10) for i in range(5)]
>>> }
>>> )
->>> cux_df = cuXfilter.DataFrame.from_dataframe(df)
+>>> cux_df = cuxfilter.DataFrame.from_dataframe(df)
>>> line_chart_1 = charts.bokeh.line(
>>> 'key', 'val', data_points=5, add_interaction=False
>>> )
@@ -470,20 +470,20 @@ DashBoard
--
-property
charts
¶
+-
+property
charts
¶
Charts in the dashboard as a dictionary.