holoviz / datashader Goto Github PK
View Code? Open in Web Editor NEWQuickly and accurately render even the largest data.
Home Page: http://datashader.org
License: BSD 3-Clause "New" or "Revised" License
Quickly and accurately render even the largest data.
Home Page: http://datashader.org
License: BSD 3-Clause "New" or "Revised" License
The package castra is not mentioned in the README.md.
I tried conda install -c https://conda.anaconda.org/calex castra
(the only copy of castra for py34 on osx-64 on anaconda) but I got the error:
TypeError Traceback (most recent call last)
----> 1 df = dd.from_castra('data/osm.castra')
2 df.tail()
/Users/caged/miniconda3/envs/datashader/lib/python3.4/site-packages/dask/dataframe/io.py in from_castra(x, columns)
567 from castra import Castra
568 if not isinstance(x, Castra):
--> 569 x = Castra(x, readonly=True)
570 return x.to_dask(columns)
571
TypeError: __init__() got an unexpected keyword argument 'readonly'
It would be nice if interpolate()
had knowledge of palettes to range over, instead of requiring a low and high color value. This should be a fairly straightforward thing to do, but will just require a brief survey of what currently exists and the best way to incorporate the possibilities. (e.g. https://bids.github.io/colormap/)
Hello everybody,
I've seen many examples how to implement a heatmap with bokeh
, but none about how doing it with datashader
. I've already tested the taxi example and implemented my data, but it just shows a scatter plot, not a heatmap.
I think I should change something in and around this line:
pix = tf.interpolate(agg, low='lightblue', high='red', how=self.model.transfer_function)
However, I do not know how to proceed. What I would like is something like this. Is it possible with datashader
? Is it possible, as well, that I click into a point and displays the information in that point?
Now that there is line support, need to add an example of using it to plot a trajectory (series of connected line segments) with a large number of points.
Currently, datashader's scatterplot/heatmap approach for points data partitions the set of points, allocating each one into non-overlapping pixel-shaped bins. Some types of data come with associated probabilities, such as a known measurement error bound or an estimated uncertainty per point.
It would be good to have an example of how to aggregate such data, such that the value of each datapoint is assigned to multiple bins in the aggregate array, according to some kernel function (e.g. a 2D Gaussian, where errors are specified as stddevs).
For the special case of a square error kernel, this approach is equivalent to implementing support for raster data (see #86), where each raster datapoint represents a specified area of the X,Y plane with equal probability or weighting within that square.
We'll need a suitable dataset of this type, preferably one with widely varying error estimates across the datapoints, such that some points have tight bounds and others are less constrained.
Because datashader allows arbitrarily nonlinear mappings from data values to plotted colors, it would be very useful to have more precise control over colormaps. Issue #81 is one important extension, but making it possible to generate novel colormaps that are a good match to a particular pipeline's output is also important. @jcrist and @jbednar have discussed this previously over email, with @jcrist having details for a simple text-based specification that we could use.
The current datashader pipeline always generates an image as the final output, with each aggregate bin corresponding to one output pixel. However, there are other possible ways to represent the data in the array, and it would be helpful to make some examples of what can be done.
For instance, given a set of aggregated timeseries, a statistical model (e.g. a normal distribution), and an error criterion, one could aggregate the set of timeseries into a 1D aggregate, then evaluate the goodness of fit for the model using a rolling window over the aggregate array. For periods of the timeseries where data is fit well, one could generate a Bokeh plot showing the mean, spread, and specific data points that are unlikely to have come from that distribution. For regions that are a poor fit to the model, could have some other representation.
Similarly, in 2D one could generate a contour plot for areas that are a good fit to the model (e.g. a sum of a fixed number of 2D Gaussians), plus specific outlying points.
A hybrid approach is also possible, generating a bitmap plus specific outliers (perhaps limited to certain types of outliers, such as those much larger than the mean, not those much smaller); explicit glyphs for the outliers would be overlaid on the overall bitmap, making information about them available to e.g. the hover tool.
Tasks:
[ ] Alternative symbolic visualization
[ ] Specifying a statistical model for aggregate output
[ ] Automatic identification and highlighting of outliers and anomalies
Because datashader produces an image rather than a collection of glyphs, there is no direct information available to the plotting program about the precise numerical values of plotted data. This information can be made available separately from the image, in a way that a plotting program (e.g. Bokeh) can display using the "hover" or "tooltips" mechanism, revealing values corresponding to the current mouse pointer location. At a minimum this information could just be the numerical value of that pixel, but it can be expanded to include counts and minimum/maximum values (if e.g. average or total values are being plotted), various statistical measures, etc.
It may be useful to bin this information on a grid coarser than the aggregation grid, which simply involves a pass over the aggregate grid to merge adjacent cells' data. In this case, it would be helpful if the hover tool showed the outline of the grid cell whose data is being shown, for clarity.
Tasks (may need to be expanded):
image
key's value in that dictionarySome of this implementation may overlap with the support for color keys/legends in issue #90, in that it requires the underlying library to make information available about the data shown in an image.
hq-dhcp-20-83:~/datashader/examples> python dashboard.py
Starting server at http://localhost:5007/...
Loading Data...
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.axes.LinearAxis object at 0x112
865350>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.grids.Grid object at 0x11286519
0>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.axes.LinearAxis object at 0x112
865f10>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.grids.Grid object at 0x112865c9
0>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.renderers.TileRenderer object a
t 0x112865090>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.renderers.DynamicImageRenderer
object at 0x112865510>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.axes.LinearAxis object at 0x112
865350>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.grids.Grid object at 0x11286519
0>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.axes.LinearAxis object at 0x112
865f10>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.grids.Grid object at 0x112865c9
0>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.renderers.TileRenderer object a
t 0x112865090>, which is a client-only or invalid attribute that shouldn't have been sent
WARNING:bokeh.core.properties:JSON had attr u'parent' on obj <bokeh.models.renderers.DynamicImageRenderer
object at 0x112865510>, which is a client-only or invalid attribute that shouldn't have been sent
The download_sample_data.py script converts latitude and longitude to meters (in Web Mercator coordinates), but writes those values back to the original fields. Those fields are named pickup_longitude, pickup_latitude, dropoff_longitude, and dropoff_latitude, which is very confusing when reading code that uses this dataset, because they no longer contain latitudes or longitudes. Should presumably store the computed values in pickup_x, pickup_y, dropoff_x, and dropoff_y instead.
Once there is hover-tool support (issue #91), it would be great if we could support a box-select tool as well, providing essentially the same information as hovering but for a bounding box specified by the user interactively. Adding such support seems relatively straightforward once the hover tool support is in place, but it requires a dynamic query rather than static information provided when the plot is created. Even so, the data can presumably be computed directly from the static information already provided, and so it should not require re-running any of the stages of the datashader pipeline.
Lasso-tool support may make sense as well, again just as a selection of the existing aggregate bins.
Now that there is support for line plots, need to add examples of plotting large and/or multiple time series.
Because datashader allows automatic ranging and a flexible pipeline that can recompute all plot parameters for every pan and zoom, it is both essential and difficult to provide meaningful keys and legends. For instance, users could insert any arbitrarily nonlinear (including non-monotonic) transfer function into the pipeline, without the downstream client being able to detect that it was added, what its properties are, or how it should affect the values shown in any color key. We'll need an API that makes suitable information available from the core library, as long as the programmer sets things up according to our recommendations, while knowing that in principle there's no way to solve this problem for the fully general case of arbitrary transformations. Hopefully it will be practical to at least semi-automate this process, such that colors can be shown for a set of test values provided to the front of the pipeline, if only for the maximum and minimum values from the viewport.
Tasks (will probably need expanding):
I tried modifying the nyc-taxi example to work with some of my own data.
when i run ~/anaconda3/bin/bokeh serve --show datashaderDataAnalysis.py
I get two exceptions.
File "dispatcher.py", line 710, in _open_for_write:
with open(tmpname, "wb") as f: Traceback (most recent call last):
File "/home/jduplessis/anaconda3/lib/python3.5/site-packages/numba/dispatcher.py", line 657, in save_overload
data_name = overloads[key]
KeyError: ('(uint32,)', ('x86_64-unknown-linux-gnu', 'core-avx2', True))
and
File "/home/jduplessis/anaconda3/lib/python3.5/site-packages/numba/dispatcher.py", line 710, in _open_for_write
with open(tmpname, "wb") as f:
PermissionError: [Errno 13] Permission denied: '/home/jduplessis/anaconda3/lib/python3.5/site-packages/datashader-0.1.0-py3.5.egg/datashader/pycache/composite.extract_scaled-10.py35m.nbi.tmp.8249'
any ideas?
Wheel zoom: I'm a big fan of leaving wheel zoom disabled for any decent-sized web page or notebook, because I use the wheel zoom extensively to navigate through the document, and it then keeps getting stuck on Bokeh plots. But for a single-page non-scrolling app like dashboard.py, the scroll wheel isn't doing anything useful anyway, and so it should be enabled by default.
@brendancol suggests that doing so will require a small change in Bokeh, so it may not be practical for a while.
Wall-to-wall plots: It would similarly be nice to enable wall-to-wall plotting in this example, to make better use of the screen area, but again that apparently requires appropriate functionality to be exposed to Python in Bokeh.
Tab name: Can the browser tab label string for the dashboard be changed to something more useful than "Bokeh Application"? bwc - this is doable
Some data has an associated period that should be taken into account for visualizations. For instance, patterns may repeat according to a certain pattern based on the hour of the day, day of the week, month of the year, etc., or according to some non-calendar-based timeline.
We should make an example of plotting such data, first for a fixed, known timebase, and then possibly for exploring possible timebases interactively (akin to Fourier analysis, i.e. plotting across a range of periodicities).
Tasks:
See also #104.
I originally used dynd to store the results of aggregation because:
However, I no longer think this was a good decision, and propose to remove it from the codebase. Reasons:
Because of these reasons, I'd like to switch to using numpy arrays to hold the aggregates. This will play better with existing tools and simplifies our internals greatly. Aggregates actually are computed as numpy arrays, and are only cast to dynd arrays at the end, so this will only touch a few files anyway.
The big question then is how to handle missingness. I see a few options:
nan
indicates missingness. This is by far the easiest method, but also seems a bit of a hack. Some quantities are inherently integers, forcing floating representation means loss of precision (although the importance of this is probably negligible here).ndarray
, and build a (limited) ndarray class that supports missingness with the same semantics as dynd. This may or may not be tricky, but will definitely be trickier than option 1.Aggregate
classes as raw numpy arrays and a missingness flag (i.e. what value in the array indicates missingess). All operations go through this. This is similar to how the aggregates currently work, but would avoid all of the mucking with dynd.Of these options, I'm leaning towards 1 or 4. Not sure what's best here.
A follow-up question is, if/once dynd is gone, do we continue to use datashape/odo? Datashape was used because I started with both blaze and dynd, and they each use it. After nixing both of these as dependencies, it may no longer make sense to use it. However, the cost of continuing to use it is minimal, it's quick to convert numpy dtype -> datashape. It would just remove dependencies, and the need for a second type system other than numpy/pandas's.
InteractiveImage has mostly been working amazingly well, but I'm having a strange problem in a new notebook:
https://anaconda.org/jbednar/tseries/notebook
If I run that notebook using Run All, then try to zoom into the last cell (here using a box zoom), I get an error "conflicting sizes for dimension 'y_axis': length 273 on the data but length 274 on coordinate 'y_axis'"
:
And the plot doesn't update (as can be seen in this blocky image). Any ideas, @brendancol or @philippjfr ?
I'd like to be able to render images that have a black background, but I don't see how to do it. The PIL.Image.fromarray
function that we're using in transfer_functions.py
generates an RGBA image, but the function call doesn't seem to allow the background color that comes through for transparent pixels to be specified. Presumably we could make a blank black image using PIL.Image.new
and then add the two images together, but that seems awkward...
This won't be very practical right now, but it would be great to be able to show axis labels with lat, lon coordinates in degrees. Doing this properly would require Bokeh support for nonlinear axis lines, as in:
but even just having the approximately correct values in degrees along the x and y axis (with no grid lines, since they would be incorrectly straight!) would be helpful in some cases.
Meanwhile, maybe we can support hovering, to show the value in lat/lon, converted from the native Web Mercator values?
I have executed
python dashboard/dashboard.py --config dashboard/nyc_taxi.yml
to see the example, but it does not return anything. Well... yes, this and only this:
HTTP request sent; waiting for response
There's nothing in localhost:5000
.
Hi,
We just had a user on the bokeh mailing list who couldn't install datashader - there's no win-64 package.
I went to point them to the manual install I used the other day, but it's gone from the README.
Can you add it back? Other people who, want to hack on datashader for example, will still want the manual install information.
Or perhaps - given that you're already setup on RTD, then, it can just be in there under a dev guide?
We need examples of plotting 2D datasets that vary over time. One example would be to map the time of day of the NYC taxi data into a hue value (since hour-of-the-day varies circularly, as hue does), and then let the saturation or luminance show the density of pickups or dropoffs.
This plot would map from time of day to hue, but many other possible ways to show temporal data could be used. E.g. if we have dynamic trajectory/telemetry data, we should be able to play that back as moving dots for a given day, making an animation.
Similarly, we could make a model of the US Census data, extrapolating it into the future, and then construct an animation to show the changes over time
I have a data frame with four columns: x-coordinates
, y-coordinates
, weight
and height
. I want the data points to be colored according to their weight
and height
in two different colormaps, rather than by density.
This is my progress so far:
import datashader as ds
from datashader import transfer_functions as tf
from functools import partial
def create_image(x_range, y_range, w, h, color_fn=tf.interpolate):
cvs = ds.Canvas(plot_width=w, plot_height=h, x_range=x_range, y_range=y_range)
agg = cvs.points(df, 'x-coord', 'y-coord', ds.mean('weight'))
image = color_fn(agg)
return image
create_image(x_range, y_range, 400, 250, color_fn=partial(tf.interpolate, low="lightgrey", high='black', how='log'))
How would I go about adding the mean of height
and plot it in a colorscale from lightred
to darkred
, so that the final plot displays both height
and weight
in two different color maps in the same plot. This would be similar to the census example in the webinar, where ethnicities were plotted in different colors (although that was according to the density rather than the mean values of another column).
Hi,
I'm just starting to play around with datashader following one of your notebooks from the webinar and am getting the error below. My dataframe has about 10 mil points, floating point, no nans. This is run in a notebook as in the webinar. I'm running 2.7, datashader-0.1.0, bokeh-0.11.1, MacOSX. Many thanks! Evan
p = figure(
x_range=(0, 1),
y_range=(0, 1),
tools='pan,wheel_zoom,box_zoom,reset',
plot_width=500,
plot_height=500,
)
pipeline = ds.Pipeline(df, ds.Point("s3", "modscag"))
InteractiveImage(p, pipeline)
TypeError: Cannot read property '$' of undefined
at Array.inline_js (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :54:14)
at run_inline_js (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :67:21)
at eval (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :77:9)
at eval (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :11:67)
at Array.forEach (native)
at run_callbacks (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :11:38)
at load_libs (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :23:9)
at eval (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :77:7)
at eval (eval at (http://localhost:8889/static/notebook/js/main.min.js?v=40e10638fcf65fc1c057bff31d165e9d:89:4231), :82:4)
at eval (native)
Hi
I am running a datashader demo developed by Continum Analytics here:
c
I am running the demo, but after loading BokehJS, it seems the module named tile_providers doesn't exist anymore?
Please advise
Thanks
TJ
Notebook: module named tile_providers
I'm now at the 3rd code segment in the Jupyter Notebook after receiving:
"BokehJS successfully loaded."
When I run the following code I received another error:
Code:
from bokeh.tile_providers import STAMEN_TERRAIN
samples = df.sample(n=1000)
p = base_plot()
p.add_tile(STAMEN_TERRAIN)
p.circle(x=samples['dropoff_x'], y=samples['dropoff_y'], **options)
show(p)
Error:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-5-f4a971eece60> in <module>()
----> 1 from bokeh.tile_providers import STAMEN_TERRAIN
2
3 samples = df.sample(n=1000)
4 p = base_plot()
5 p.add_tile(STAMEN_TERRAIN)
ImportError: No module named tile_providers
Thanks
Hi - Making progress getting the datashader demo code to run so far :) , except... ;(
Ref # https://github.com/bokeh/datashader/issues/72#issuecomment-185412152
Now at "10-million-point datashaded plots: auto-ranging, but not perceptually calibrated" step @
https://anaconda.org/jbednar/nyc_taxi/notebook
import datashader as ds
from datashader import transfer_functions as tf
from functools import partial
def create_image(x_range, y_range, w, h, color_fn=tf.interpolate):
cvs = ds.Canvas(plot_width=w, plot_height=h, x_range=x_range, y_range=y_range)
agg = cvs.points(df, 'dropoff_x', 'dropoff_y', ds.count('passenger_count'))
image = color_fn(agg)
return image
I am receiving these two errors. Any guidance on this please? I ran "pip install numpy" just in case and received the message: " Requirement already satisfied"
Many Thanks.
RuntimeError Traceback (most recent call last)
RuntimeError: module compiled against API version a but this version of numpy is 9
ImportError Traceback (most recent call last)
in ()
----> 1 import datashader as ds
2 from datashader import transfer_functions as tf
3 from functools import partial
4
5 def create_image(x_range, y_range, w, h, color_fn=tf.interpolate):
anaconda/lib/python2.7/site-packages/datashader/init.py in ()
3 version = '0.1.0'
4
----> 5 from .core import Canvas
6 from .reductions import (count, sum, min, max, mean, std, var, count_cat,
7 summary)
anaconda/lib/python2.7/site-packages/datashader/core.py in ()
5 from odo import discover
6
----> 7 from .utils import Dispatcher, ngjit
8
9
anaconda/lib/python2.7/site-packages/datashader/utils.py in ()
3 from inspect import getmro
4
----> 5 import numba as nb
6 from datashape import Unit
7 from datashape.predicates import launder
anaconda/lib/python2.7/site-packages/numba/init.py in ()
5 import re
6
----> 7 from . import testing, decorators
8 from . import errors, special, types, config
9
anaconda/lib/python2.7/site-packages/numba/decorators.py in ()
8 from . import config, sigutils
9 from .errors import DeprecationError
---> 10 from .targets import registry
11 from . import cuda
12
anaconda/lib/python2.7/site-packages/numba/targets/registry.py in ()
1 from future import print_function, division, absolute_import
2
----> 3 from . import cpu
4 from .descriptors import TargetDescriptor
5 from .. import dispatcher, utils, typing
anaconda/lib/python2.7/site-packages/numba/targets/cpu.py in ()
9 from numba import _dynfunc, config
10 from numba.callwrapper import PyCallWrapper
---> 11 from .base import BaseContext, PYOBJECT
12 from numba import utils, cgutils, types
13 from numba.utils import cached_property
anaconda/lib/python2.7/site-packages/numba/targets/base.py in ()
13
14 from numba import types, utils, cgutils, typing
---> 15 from numba import _dynfunc, _helperlib
16 from numba.pythonapi import PythonAPI
17 from numba.targets.imputils import (user_function, user_generator,
ImportError: numpy.core.multiarray failed to import
Error#2 of 2:
Then after running the same code/cell again in jupyter I receive this error message:
ImportError Traceback (most recent call last)
in ()
----> 1 import datashader as ds
2 from datashader import transfer_functions as tf
3 from functools import partial
4
5 def create_image(x_range, y_range, w, h, color_fn=tf.interpolate):
anaconda/lib/python2.7/site-packages/datashader/init.py in ()
3 version = '0.1.0'
4
----> 5 from .core import Canvas
6 from .reductions import (count, sum, min, max, mean, std, var, count_cat,
7 summary)
anaconda/lib/python2.7/site-packages/datashader/core.py in ()
5 from odo import discover
6
----> 7 from .utils import Dispatcher, ngjit
8
9
anaconda/lib/python2.7/site-packages/datashader/utils.py in ()
3 from inspect import getmro
4
----> 5 import numba as nb
6 from datashape import Unit
7 from datashape.predicates import launder
anaconda/lib/python2.7/site-packages/numba/init.py in ()
5 import re
6
----> 7 from . import testing, decorators
8 from . import errors, special, types, config
9
anaconda/lib/python2.7/site-packages/numba/decorators.py in ()
6 import warnings
7
----> 8 from . import config, sigutils
9 from .errors import DeprecationError
10 from .targets import registry
ImportError: cannot import name config
It's unclear how to overlay a datashaded plot over a GMapPlot background and have both stay in sync on pan/zoom: an example would be really useful.
The python library calls used to download the sample data give no indication of progress, and can take many tens of minutes, making it completely unclear whether it will complete successfully. We used Python to do this so that it would work across platforms, but maybe we should first try wget or curl and only then fall back to Python's stdlib if those are not available.
The examples directory should have something demonstrating categorical data, and the 2010 Census data illustrates that nicely. We'll need to add dynamic point sizing for it to work at high zoom levels, first...
Is throttling messed up?
The InteractiveImage class provides very general support for making a Bokeh plot out of any callable that can return an image. datashader is one place that comes up, but there are an infinite number of other possible applications, such as raster downsampling in general. It would be good to make a pull request for Bokeh so that this functionality is available to other Bokeh users as well.
Moving it is probably premature, though, as we are just now starting to work on legend and hover tool support (#90, #91) that would necessitate changes to InteractiveImage. Specifically, we are expecting to supply not just the image, but some metadata useful for constructing keys and hover information for Bokeh to use. We might do this as an InteractiveImage subclass (to keep the basic image support cleaner), but in any case, perhaps best to wait until after we've worked out the best way to do that, since we'll probably at least want to change the expected function return type from an image into a dict or other container structure, at least optionally.
I posted this question quite few days ago but is looks like it dragged no attention.
bokeh/bokeh-notebooks#24
In two sentences:
remote_ocean_slider example from here ( https://github.com/bokeh/bokeh-notebooks/blob/master/quickstart/quickstart.ipynb ) is not implemented in Datashader.
Is it actually possible?
It looks like Datashader is only for Scatter and Line plots...
What about Image (2D) data?
In my case the data slices has about 1B points, but the resolution on the client side is far less than that.
The client side also will navigate through the data and apply some operations (filtering, scaling, interleaving and colormapping) on the selected section.
I plan to implement it as a widget so that I can use it in all of my post/pre-processing activities...
Any reply is highly appreciated!
Thanks!
If a nonlinear 'how' operator is selected for interpolate
, the color range covered by some intensity ranges will be increased, and for others it will be decreased (according to the specific function selected). If such a function is chosen well for a particular dataset, local (in data intensity space) differences in value will map onto visible differences in RGB colors on a monitor, across the full range of data values.
An alternative to choosing a fixed such nonlinear function would be to do histogram equalization on the aggregates, making each of the various commonly occurring data value ranges be mapped onto visible color differences, even for data whose distribution cannot a priori be known to map to a particular nonlinear function, and even if that function has some nonstandard shape (e.g. trimodal). It should be straightforward to implement this function as a transfer function on aggregates, mapping each bin's magnitude into a histogram-equalized magnitude that spreads out the plotted values nicely across the visible color space.
Thank you for the great webinar today! I am eager to try out the datashader library, but unfortunately I am running into some issues. Installing using conda
works fine, but when I execute import datashader
, the kernel dies and I receive a massive error message:
[I 16:06:54.948 NotebookApp] Serving notebooks from local directory: /home/joel/draft
[I 16:06:54.948 NotebookApp] 0 active kernels
[I 16:06:54.948 NotebookApp] The IPython Notebook is running at: http://localhost:8888/
[I 16:06:54.948 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[I 16:07:04.287 NotebookApp] Kernel started: 8ae9f4ca-9f1d-409a-9273-0cac620d2073
[I 16:07:07.376 NotebookApp] Kernel started: f70d75f2-a6c3-46fc-b3d4-c362ba624be5
*** Error in `/home/joel/anaconda2/bin/python': free(): invalid pointer: 0x00007efde703d040 ***
======= Backtrace: =========
/usr/lib/libc.so.6(+0x72055)[0x7efe23f0f055]
/usr/lib/libc.so.6(+0x779a6)[0x7efe23f149a6]
/usr/lib/libc.so.6(+0x7818e)[0x7efe23f1518e]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE+0x142)[0x7efde6b04582]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(_ZNSt6locale5_ImplC1Em+0x1e3)[0x7efde6af6f43]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(_ZNSt6locale18_S_initialize_onceEv+0x15)[0x7efde6af7eb5]
/usr/lib/libpthread.so.0(+0xe519)[0x7efe24954519]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(_ZNSt6locale13_S_initializeEv+0x21)[0x7efde6af7f01]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(_ZNSt6localeC1Ev+0x13)[0x7efde6af7f43]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(_ZNSt8ios_base4InitC1Ev+0xb4)[0x7efde6af51c4]
/home/joel/anaconda2/lib/python2.7/site-packages/dynd/../../../libdynd.so(+0xfd89f0)[0x7efde65bb9f0]
/lib64/ld-linux-x86-64.so.2(+0xf27a)[0x7efe24f5927a]
/lib64/ld-linux-x86-64.so.2(+0xf38b)[0x7efe24f5938b]
/lib64/ld-linux-x86-64.so.2(+0x13830)[0x7efe24f5d830]
/lib64/ld-linux-x86-64.so.2(+0xf124)[0x7efe24f59124]
/lib64/ld-linux-x86-64.so.2(+0x12fd1)[0x7efe24f5cfd1]
/usr/lib/libdl.so.2(+0xfc9)[0x7efe24742fc9]
/lib64/ld-linux-x86-64.so.2(+0xf124)[0x7efe24f59124]
/usr/lib/libdl.so.2(+0x15e1)[0x7efe247435e1]
/usr/lib/libdl.so.2(dlopen+0x31)[0x7efe24743061]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(_PyImport_GetDynLoadFunc+0x13e)[0x7efe24c92dde]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(_PyImport_LoadDynamicModule+0x98)[0x7efe24c778d8]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x112f81)[0x7efe24c75f81]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1131f4)[0x7efe24c761f4]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ImportModuleLevel+0x1f0)[0x7efe24c76820]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0xf314f)[0x7efe24c5614f]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyObject_Call+0x53)[0x7efe24bacd23]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_CallObjectWithKeywords+0x43)[0x7efe24c56633]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x3d6e)[0x7efe24c5b29e]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x89e)[0x7efe24c60a2e]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCode+0x32)[0x7efe24c60b42]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ExecCodeModuleEx+0xc2)[0x7efe24c72a82]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1121ce)[0x7efe24c751ce]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x112a2a)[0x7efe24c75a2a]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x112f81)[0x7efe24c75f81]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1131f4)[0x7efe24c761f4]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ImportModuleLevel+0x1f0)[0x7efe24c76820]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0xf314f)[0x7efe24c5614f]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0xf314f)[0x7efe24c5614f]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyObject_Call+0x53)[0x7efe24bacd23]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_CallObjectWithKeywords+0x43)[0x7efe24c56633]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x3d6e)[0x7efe24c5b29e]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x89e)[0x7efe24c60a2e]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCode+0x32)[0x7efe24c60b42]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ExecCodeModuleEx+0xc2)[0x7efe24c72a82]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1121ce)[0x7efe24c751ce]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x112f81)[0x7efe24c75f81]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1131f4)[0x7efe24c761f4]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ImportModuleLevel+0x230)[0x7efe24c76860]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0xf314f)[0x7efe24c5614f]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyObject_Call+0x53)[0x7efe24bacd23]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_CallObjectWithKeywords+0x43)[0x7efe24c56633]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x3d6e)[0x7efe24c5b29e]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x89e)[0x7efe24c60a2e]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_EvalCode+0x32)[0x7efe24c60b42]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ExecCodeModuleEx+0xc2)[0x7efe24c72a82]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1121ce)[0x7efe24c751ce]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x112a2a)[0x7efe24c75a2a]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x112f81)[0x7efe24c75f81]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0x1131f4)[0x7efe24c761f4]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyImport_ImportModuleLevel+0x1f0)[0x7efe24c76820]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(+0xf314f)[0x7efe24c5614f]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyObject_Call+0x53)[0x7efe24bacd23]
/home/joel/anaconda2/bin/../lib/libpython2.7.so.1.0(PyEval_CallObjectWithKeywords+0x43)[0x7efe24c56633]
======= Memory map: ========
00400000-00401000 r-xp 00000000 08:05 1450070 /home/joel/anaconda2/bin/python2.7
00600000-00601000 rw-p 00000000 08:05 1450070 /home/joel/anaconda2/bin/python2.7
017f9000-02c74000 rw-p 00000000 00:00 0 [heap]
7efde0000000-7efde0021000 rw-p 00000000 00:00 0
7efde0021000-7efde4000000 ---p 00000000 00:00 0
7efde55e3000-7efde6dbe000 r-xp 00000000 08:05 2095468 /home/joel/anaconda2/lib/libdynd.so
7efde6dbe000-7efde6fbe000 ---p 017db000 08:05 2095468 /home/joel/anaconda2/lib/libdynd.so
7efde6fbe000-7efde6ff7000 r--p 017db000 08:05 2095468 /home/joel/anaconda2/lib/libdynd.so
7efde6ff7000-7efde7011000 rw-p 01814000 08:05 2095468 /home/joel/anaconda2/lib/libdynd.so
7efde7011000-7efde703f000 rw-p 00000000 00:00 0
7efde703f000-7efde721f000 r-xp 00000000 08:05 1968887 /home/joel/anaconda2/lib/python2.7/site-packages/dynd/libpydynd.so
7efde721f000-7efde741f000 ---p 001e0000 08:05 1968887 /home/joel/anaconda2/lib/python2.7/site-packages/dynd/libpydynd.so
7efde741f000-7efde7423000 r--p 001e0000 08:05 1968887 /home/joel/anaconda2/lib/python2.7/site-packages/dynd/libpydynd.so
7efde7423000-7efde742a000 rw-p 001e4000 08:05 1968887 /home/joel/anaconda2/lib/python2.7/site-packages/dynd/libpydynd.so
7efde742a000-7efde742b000 rw-p 00000000 00:00 0
7efde742b000-7efde7431000 r-xp 00000000 08:05 1968819 /home/joel/anaconda2/lib/python2.7/site-packages/dynd/config.so
7efde7431000-7efde7630000 ---p 00006000 08:05 1968819 /home/joel/anaconda2/lib/python2.7/site-packages/dynd/config.so
7efde7630000-7efde7631000 r--p 00005000 08:05 1968819 /home/joel/anaconda2/lib/python2.7/site-packages/dynd/config.so
7efde7631000-7efde7632000 rw-p 00006000 08:05 1968819 /home/joel/anaconda2/lib/python2.7/site-packages/dynd/config.so
7efde7632000-7efde7633000 rw-p 0001e000 08:05 1968819 /home/joel/anaconda2/lib/python2.7/site-packages/dynd/config.so
7efde7633000-7efde7673000 rw-p 00000000 00:00 0
7efde7673000-7efde7698000 r-xp 00000000 08:05 2106528 /home/joel/anaconda2/lib/python2.7/site-packages/tables/indexesextension.so
7efde7698000-7efde7898000 ---p 00025000 08:05 2106528 /home/joel/anaconda2/lib/python2.7/site-packages/tables/indexesextension.so
7efde7898000-7efde789b000 rw-p 00025000 08:05 2106528 /home/joel/anaconda2/lib/python2.7/site-packages/tables/indexesextension.so
7efde789b000-7efde78dc000 rw-p 00000000 00:00 0
7efde78dc000-7efde78f1000 r-xp 00000000 08:05 2106538 /home/joel/anaconda2/lib/python2.7/site-packages/tables/lrucacheextension.so
7efde78f1000-7efde7af0000 ---p 00015000 08:05 2106538 /home/joel/anaconda2/lib/python2.7/site-packages/tables/lrucacheextension.so
7efde7af0000-7efde7af3000 rw-p 00014000 08:05 2106538 /home/joel/anaconda2/lib/python2.7/site-packages/tables/lrucacheextension.so
7efde7af3000-7efde7b57000 r-xp 00000000 08:05 2106584 /home/joel/anaconda2/lib/python2.7/site-packages/tables/tableextension.so
7efde7b57000-7efde7d56000 ---p 00064000 08:05 2106584 /home/joel/anaconda2/lib/python2.7/site-packages/tables/tableextension.so
7efde7d56000-7efde7d5d000 rw-p 00063000 08:05 2106584 /home/joel/anaconda2/lib/python2.7/site-packages/tables/tableextension.so
7efde7d5d000-7efde7d9f000 rw-p 00000000 00:00 0
7efde7d9f000-7efde7dac000 r-xp 00000000 08:05 2106535 /home/joel/anaconda2/lib/python2.7/site-packages/tables/linkextension.so
7efde7dac000-7efde7fab000 ---p 0000d000 08:05 2106535 /home/joel/anaconda2/lib/python2.7/site-packages/tables/linkextension.so
7efde7fab000-7efde7fae000 rw-p 0000c000 08:05 2106535 /home/joel/anaconda2/lib/python2.7/site-packages/tables/linkextension.so
7efde7fae000-7efde7fee000 rw-p 00000000 00:00 0
7efde7fee000-7efde8069000 r-xp 00000000 08:05 2106519 /home/joel/anaconda2/lib/python2.7/site-packages/tables/hdf5extension.so
7efde8069000-7efde8269000 ---p 0007b000 08:05 2106519 /home/joel/anaconda2/lib/python2.7/site-packages/tables/hdf5extension.so
7efde8269000-7efde8271000 rw-p 0007b000 08:05 2106519 /home/joel/anaconda2/lib/python2.7/site-packages/tables/hdf5extension.so
7efde8271000-7efde8274000 rw-p 00000000 00:00 0
7efde8274000-7efde8286000 r-xp 00000000 08:05 2106487 /home/joel/anaconda2/lib/python2.7/site-packages/tables/_comp_bzip2.so
7efde8286000-7efde8485000 ---p 00012000 08:05 2106487 /home/joel/anaconda2/lib/python2.7/site-packages/tables/_comp_bzip2.so
7efde8485000-7efde8487000 rw-p 00011000 08:05 2106487 /home/joel/anaconda2/lib/python2.7/site-packages/tables/_comp_bzip2.so
7efde8487000-7efde848c000 r-xp 00000000 08:05 2106488 /home/joel/anaconda2/lib/python2.7/site-packages/tables/_comp_lzo.so
7efde848c000-7efde868c000 ---p 00005000 08:05 2106488 /home/joel/anaconda2/lib/python2.7/site-packages/tables/_comp_lzo.so
7efde868c000-7efde868d000 rw-p 00005000 08:05 2106488 /home/joel/anaconda2/lib/python2.7/site-packages/tables/_comp_lzo.so
7efde868d000-7efde870d000 rw-p 00000000 00:00 0
7efde870d000-7efde8770000 r-xp 00000000 08:05 2106701 /home/joel/anaconda2/lib/python2.7/site-packages/tables/utilsextension.so
7efde8770000-7efde8970000 ---p 00063000 08:05 2106701 /home/joel/anaconda2/lib/python2.7/site-packages/tables/utilsextension.so
7efde8970000-7efde8978000 rw-p 00063000 08:05 2106701 /home/joel/anaconda2/lib/python2.7/site-packages/tables/utilsextension.so
7efde8978000-7efde89fb000 rw-p 00000000 00:00 0
7efde89fb000-7efde8a1c000 r-xp 00000000 08:05 2239262 /home/joel/anaconda2/lib/liblzma.so.5.0.5
7efde8a1c000-7efde8c1c000 ---p 00021000 08:05 2239262 /home/joel/anaconda2/lib/liblzma.so.5.0.5
7efde8c1c000-7efde8c1d000 rw-p 00021000 08:05 2239262 /home/joel/anaconda2/lib/liblzma.so.5.0.5
7efde8c1d000-7efde8c95000 r-xp 00000000 08:05 2095615 /home/joel/anaconda2/lib/libtiff.so.5.2.4
7efde8c95000-7efde8e94000 ---p 00078000 08:05 2095615 /home/joel/anaconda2/lib/libtiff.so.5.2.4
7efde8e94000-7efde8e9b000 rw-p 00077000 08:05 2095615 /home/joel/anaconda2/lib/libtiff.so.5.2.4
7efde8e9b000-7efde8ed2000 r-xp 00000000 08:05 2094955 /home/joel/anaconda2/lib/libjpeg.so.8.4.0
7efde8ed2000-7efde90d1000 ---p 00037000 08:05 2094955 /home/joel/anaconda2/lib/libjpeg.so.8.4.0
7efde90d1000-7efde90d2000 rw-p 00036000 08:05 2094955 /home/joel/anaconda2/lib/libjpeg.so.8.4.0
7efde90d2000-7efde9120000 r-xp 00000000 08:05 5501094 /home/joel/anaconda2/lib/python2.7/site-packages/PIL/_imaging.so
7efde9120000-7efde9320000 ---p 0004e000 08:05 5501094 /home/joel/anaconda2/lib/python2.7/site-packages/PIL/_imaging.so
7efde9320000-7efde9326000 rw-p 0004e000 08:05 5501094 /home/joel/anaconda2/lib/python2.7/site-packages/PIL/_imaging.so
7efde9326000-7efde933f000 r-xp 00000000 08:05 5234751 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/lsoda.so
7efde933f000-7efde953f000 ---p 00019000 08:05 5234751 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/lsoda.so
7efde953f000-7efde9541000 rw-p 00019000 08:05 5234751 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/lsoda.so
7efde9541000-7efde9551000 r-xp 00000000 08:05 5234744 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_dop.so
7efde9551000-7efde9751000 ---p 00010000 08:05 5234744 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_dop.so
7efde9751000-7efde9753000 rw-p 00010000 08:05 5234744 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_dop.so
7efde9753000-7efde976f000 r-xp 00000000 08:05 5234773 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/vode.so
7efde976f000-7efde996f000 ---p 0001c000 08:05 5234773 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/vode.so
7efde996f000-7efde9971000 rw-p 0001c000 08:05 5234773 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/vode.so
7efde9971000-7efde99b2000 rw-p 00000000 00:00 0
7efde99b2000-7efde99c6000 r-xp 00000000 08:05 5234748 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_quadpack.so
7efde99c6000-7efde9bc6000 ---p 00014000 08:05 5234748 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_quadpack.so
7efde9bc6000-7efde9bc7000 rw-p 00014000 08:05 5234748 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_quadpack.so
7efde9bc7000-7efde9bdd000 r-xp 00000000 08:05 5234747 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_odepack.so
7efde9bdd000-7efde9ddc000 ---p 00016000 08:05 5234747 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_odepack.so
7efde9ddc000-7efde9ddd000 rw-p 00015000 08:05 5234747 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/integrate/_odepack.so
7efde9ddd000-7efde9dde000 rw-p 00000000 00:00 0
7efde9dde000-7efde9dee000 r-xp 00000000 08:05 5235686 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ellip_harm_2.so
7efde9dee000-7efde9fee000 ---p 00010000 08:05 5235686 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ellip_harm_2.so
7efde9fee000-7efde9ff0000 rw-p 00010000 08:05 5235686 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ellip_harm_2.so
7efde9ff0000-7efdea058000 r-xp 00000000 08:05 5235703 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/specfun.so
7efdea058000-7efdea258000 ---p 00068000 08:05 5235703 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/specfun.so
7efdea258000-7efdea260000 rw-p 00068000 08:05 5235703 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/specfun.so
7efdea260000-7efdea275000 r-xp 00000000 08:05 5235690 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ufuncs_cxx.so
7efdea275000-7efdea474000 ---p 00015000 08:05 5235690 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ufuncs_cxx.so
7efdea474000-7efdea476000 rw-p 00014000 08:05 5235690 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ufuncs_cxx.so
7efdea476000-7efdea564000 r-xp 00000000 08:05 5235689 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ufuncs.so
7efdea564000-7efdea763000 ---p 000ee000 08:05 5235689 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ufuncs.so
7efdea763000-7efdea778000 rw-p 000ed000 08:05 5235689 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/special/_ufuncs.so
7efdea778000-7efdea7bf000 rw-p 00000000 00:00 0
7efdea7bf000-7efdea828000 r-xp 00000000 08:05 5235535 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so
7efdea828000-7efdeaa28000 ---p 00069000 08:05 5235535 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so
7efdeaa28000-7efdeaa34000 rw-p 00069000 08:05 5235535 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/eigen/arpack/_arpack.so
7efdeaa34000-7efdeaa8b000 r-xp 00000000 08:05 5235521 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/_superlu.so
7efdeaa8b000-7efdeac8b000 ---p 00057000 08:05 5235521 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/_superlu.so
7efdeac8b000-7efdeac8d000 rw-p 00057000 08:05 5235521 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/dsolve/_superlu.so
7efdeac8d000-7efdeaccd000 rw-p 00000000 00:00 0
7efdeaccd000-7efdeacfe000 r-xp 00000000 08:05 5235560 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/_iterative.so
7efdeacfe000-7efdeaefe000 ---p 00031000 08:05 5235560 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/_iterative.so
7efdeaefe000-7efdeaf06000 rw-p 00031000 08:05 5235560 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/linalg/isolve/_iterative.so
7efdeaf06000-7efdeaf07000 rw-p 00000000 00:00 0
7efdeaf07000-7efdeaf48000 r-xp 00000000 08:05 5235468 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_reordering.so
7efdeaf48000-7efdeb147000 ---p 00041000 08:05 5235468 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_reordering.so
7efdeb147000-7efdeb14c000 rw-p 00040000 08:05 5235468 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_reordering.so
7efdeb14c000-7efdeb14d000 rw-p 00000000 00:00 0
7efdeb14d000-7efdeb15d000 r-xp 00000000 08:05 5235467 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_min_spanning_tree.so
7efdeb15d000-7efdeb35c000 ---p 00010000 08:05 5235467 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_min_spanning_tree.so
7efdeb35c000-7efdeb35f000 rw-p 0000f000 08:05 5235467 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_min_spanning_tree.so
7efdeb35f000-7efdeb37a000 r-xp 00000000 08:05 5235471 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_traversal.so
7efdeb37a000-7efdeb57a000 ---p 0001b000 08:05 5235471 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_traversal.so
7efdeb57a000-7efdeb580000 rw-p 0001b000 08:05 5235471 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_traversal.so
7efdeb580000-7efdeb59e000 r-xp 00000000 08:05 5235470 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_tools.so
7efdeb59e000-7efdeb79e000 ---p 0001e000 08:05 5235470 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_tools.so
7efdeb79e000-7efdeb7a3000 rw-p 0001e000 08:05 5235470 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_tools.so
7efdeb7a3000-7efdeb7d9000 r-xp 00000000 08:05 5235469 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_shortest_path.so
7efdeb7d9000-7efdeb9d8000 ---p 00036000 08:05 5235469 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_shortest_path.so
7efdeb9d8000-7efdeb9df000 rw-p 00035000 08:05 5235469 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/csgraph/_shortest_path.so
7efdeb9df000-7efdeba3e000 r-xp 00000000 08:05 5235446 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/_csparsetools.so
7efdeba3e000-7efdebc3e000 ---p 0005f000 08:05 5235446 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/_csparsetools.so
7efdebc3e000-7efdebc44000 rw-p 0005f000 08:05 5235446 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/_csparsetools.so
7efdebc44000-7efdebc84000 rw-p 00000000 00:00 0
7efdebc84000-7efdec027000 r-xp 00000000 08:05 5235447 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/_sparsetools.so
7efdec027000-7efdec226000 ---p 003a3000 08:05 5235447 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/_sparsetools.so
7efdec226000-7efdec22d000 rw-p 003a2000 08:05 5235447 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/sparse/_sparsetools.so
7efdec22d000-7efdec26d000 rw-p 00000000 00:00 0
7efdec26d000-7efdec2f6000 r-xp 00000000 08:05 5235142 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/linalg/cython_lapack.so
7efdec2f6000-7efdec4f5000 ---p 00089000 08:05 5235142 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/linalg/cython_lapack.so
7efdec4f5000-7efdec4fc000 rw-p 00088000 08:05 5235142 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/linalg/cython_lapack.so
7efdec4fc000-7efdec52f000 r-xp 00000000 08:05 5235140 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/linalg/cython_blas.so
7efdec52f000-7efdec72f000 ---p 00033000 08:05 5235140 /home/joel/anaconda2/lib/python2.7/site-packages/scipy/linalg/cython_blas.so[I 16:07:16.375 NotebookApp] KernelRestarter: restarting kernel
(1/5)
WARNING:root:kernel f70d75f2-a6c3-46fc-b3d4-c362ba624be5 restarted
Any ideas of what could be the cause?
It would be good to have a toggle button to enable or disable a map labels tile layer, to help people get oriented.
Having an opacity slider for the map tiles would also be good, since the map isn't always useful.
The timeseries.ipynb example shows how to visualize one or more sets of timeseries data by plotting them in 2D (as connected line segments) and then aggregating them in 2D. Such an approach is a more-principled form of a common plotting paradigm, where large numbers of timeseries are overplotted as 2D curves, allowing the density of overlapping lines to be displayed faithfully. However, such an approach requires the curves to have a meaningful alignment in both x and y, which is true for the example data in timeseries.ipynb, but won't always be the case. Often there may be alignment in x (e.g. a shared time axis), but no meaningful alignment in the precise y values even for closely related variables. For instance, stocks for different companies in the same sector may covary but have very different absolute values, various weather-related measurements will all vary as weather fronts come and go, yet will be on different scales, etc. In some cases, these traces can be aligned by normalizing to put the y values onto similar scales, but in others such normalization would be very difficult, e.g. if there is strong drift on one variable that obscures smaller day-to-day variations that overlap. In any of these cases, aggregating the plots in 2D will not be very informative about the properties of the set of curves.
Instead, one can aggregate a set of curves in 1D directly, yielding a 1D array. The existing code can be used for this already, by ensuring that there is only a single pixel in the y direction, passing in a fake fixed value for y in the aggregation, and then aggregatng what would have been the y value for a 2D line plot as a value dimension. Alternatively, we could provide a specific interface for performing 1D aggregation, which would let us e.g. support non-uniform sampling along the x axis, as well as avoiding users having to munge their data into fake 2D as above.
In either case, we'll then need to determine appropriate ways to visualize and analyze the results. One approach is outlined in #103, i.e. to see if the aggregated values fit some statistical model (e.g. by aggregating into a histogram, then fitting the histogram from each x value with a model and computing the goodness of fit), and then plotting the fit values (for a good fit) or the actual histogram (for pixels with a bad fit). We can also highlight anomalies in some way, or do other automatic calculations on the 1D aggregate.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.