Connecting points with horizontal/vertical lines instead of direct (slope) lines

Is there any convenient way to display line chart having point are connected with horizontal/vertical lines without the need to add extra points in between?

Thanks

Hi,

There's not currently, right now you'd have to compute the "extra" points yourself, or let something like HoloView do it:

  http://holoviews.org/gallery/demos/bokeh/step_chart.html#bokeh-gallery-step-chart

But it would probably make sense, and not be too much work, for Step to be its own glyph (or perhaps for line and multiline to be modified. Please make a GitHub issue.

Bryan

···

On Jul 11, 2017, at 06:20, Meir Tseitlin <[email protected]> wrote:

Is there any convenient way to display line chart having point are connected with horizontal/vertical lines without the need to add extra points in between?

Thanks

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/7447f99e-8b72-4d44-99b6-914993faf427%40continuum.io.
For more options, visit https://groups.google.com/a/continuum.io/d/optout.

Meir,

Here is a function you could use to get you started.

Granted, this was written quickly and not thoroughly tested - it is just to get you started.

Additionally I have attached a jupyter notebook showing its usage.

def step_line(x, y):

“”"

ingest two lists

set offsets such that the data can be used

to generate a step-line plot.

Steps are thus:

  • for x’s, repeat all but the first.

  • for y’s, double up each occurance except the last

Example:

Before:

a = [1, 2, 3, 4, 5]

b = [2, 5, 9, 1, 2]

After:

a = [1, 2, 2, 3, 3, 4, 4, 5, 5]

b = [2, 2, 5, 5, 9, 9, 1, 1, 2]

“”"

x1 =

y1 =

for idx in (range(len(x)*2-1)):

if idx == 0:

print(idx)

x1.append(x[idx])

y1.append(y[idx])

else:

#print('ceil is: ’ + str(math.ceil(idx/2)))

x1.append(x[math.ceil(idx/2)])

y1.append(y[math.floor(idx/2)])

return x1, y1

step_line.ipynb (40.1 KB)

···

On Tuesday, July 11, 2017 at 7:20:48 AM UTC-4, Meir Tseitlin wrote:

Is there any convenient way to display line chart having point are connected with horizontal/vertical lines without the need to add extra points in between?

Thanks

Thanks - interesting example!

···

On Monday, July 17, 2017 at 9:48:02 PM UTC+3, Jared Thompson wrote:

Meir,

Here is a function you could use to get you started.

Granted, this was written quickly and not thoroughly tested - it is just to get you started.

Additionally I have attached a jupyter notebook showing its usage.

def step_line(x, y):

“”"

ingest two lists

set offsets such that the data can be used

to generate a step-line plot.

Steps are thus:

  • for x’s, repeat all but the first.
  • for y’s, double up each occurance except the last

Example:

Before:

a = [1, 2, 3, 4, 5]

b = [2, 5, 9, 1, 2]

After:

a = [1, 2, 2, 3, 3, 4, 4, 5, 5]

b = [2, 2, 5, 5, 9, 9, 1, 1, 2]

“”"

x1 =

y1 =

for idx in (range(len(x)*2-1)):

if idx == 0:

print(idx)

x1.append(x[idx])

y1.append(y[idx])

else:

#print('ceil is: ’ + str(math.ceil(idx/2)))

x1.append(x[math.ceil(idx/2)])

y1.append(y[math.floor(idx/2)])

return x1, y1

On Tuesday, July 11, 2017 at 7:20:48 AM UTC-4, Meir Tseitlin wrote:

Is there any convenient way to display line chart having point are connected with horizontal/vertical lines without the need to add extra points in between?

Thanks