Search code examples
bokehholoviews

How to rotate text to be horizontal on Holoview with Bokeh


In the example in https://holoviews.org/gallery/demos/bokeh/route_chord.html , how can I change the orientation of the arc labels to be horizontal? Bonus points for not overlapping - or an alternative using a seperate legend


Solution

  • the answer courtesy of @philippjfr from gitter, was:

    # %%opts Chord [edge_color_index='SourceID' label_index='City' color_index='AirportID' width=800 height=800]
    # %%opts Chord (cmap='Category20' edge_cmap='Category20')
    
    def rotate_label(plot, element):
        text_cds = plot.handles['text_1_source']
        length = len(text_cds.data['angle'])
        text_cds.data['angle'] = [0]*length
        xs = text_cds.data['x']
        text = np.array(text_cds.data['text'])
        xs[xs<0] -= np.array([len(t)*0.019 for t in text[xs<0]])
    
    busiest_airports.options(
        edge_color_index='SourceID', label_index='City', color_index='AirportID',
        width=800, height=800, finalize_hooks=[rotate_label], cmap='Category20',
        edge_cmap='Category20'
    )