Hi everyone,
few nodes and associated labels are getting overlapped when I am creating a Holoviews Chord plot using a custom json dataset.
I have tried customize the inbuilt option
padding
, responsive
, height
but with no luck. Someone please help me resolving this.
My code for building this Chord:
edge_data = [{"from": "Maulana Saheb", "to": "Lady Anna", "value": 1}, {"from": "Maulana Saheb", "to": "Mahadev", "value": 1}, {"from": "Maulana Saheb", "to": "Netaji", "value": 1}, {"from": "Maulana Saheb", "to": "Gurudev", "value": 1}, {"from": "Maulana Saheb", "to": "George Washington", "value": 1}, {"from": "Maulana Saheb", "to": "Linlithgow", "value": 1}, {"from": "Maulana Saheb", "to": "Quaid", "value": 1}, {"from": "Maulana Saheb", "to": "Herr Hitler", "value": 1}, {"from": "Maulana Saheb", "to": "Ranade", "value": 1}, {"from": "Maulana Saheb", "to": "Frank Johnson", "value": 1}, {"from": "Maulana Saheb", "to": "Dadabhai", "value": 1}, {"from": "Maulana Saheb", "to": "Jinnah Saheb", "value": 1}, {"from": "Maulana Saheb", "to": "Pherozeshah", "value": 1}, {"from": "Maulana Saheb", "to": "Pearson", "value": 1}, {"from": "Maulana Saheb", "to": "Gokhale", "value": 1}, {"from": "Maulana Saheb", "to": "Rajaji", "value": 1}, {"from": "Maulana Saheb", "to": "Charlie Andrews", "value": 1}, {"from": "Maulana Saheb", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Maulana Saheb", "to": "Shri Savarkar", "value": 1}, {"from": "Maulana Saheb", "to": "Shek", "value": 1}, {"from": "Maulana Saheb", "to": "De Valera", "value": 1}, {"from": "Maulana Saheb", "to": "Jawaharlal", "value": 1}, {"from": "Borah", "to": "John Nevin Sayre", "value": 1}, {"from": "Mahadev", "to": "Lady Anna", "value": 1}, {"from": "Mahadev", "to": "Netaji", "value": 1}, {"from": "Mahadev", "to": "Gurudev", "value": 1}, {"from": "Mahadev", "to": "George Washington", "value": 1}, {"from": "Mahadev", "to": "Linlithgow", "value": 1}, {"from": "Mahadev", "to": "Quaid", "value": 1}, {"from": "Mahadev", "to": "Herr Hitler", "value": 1}, {"from": "Mahadev", "to": "Ranade", "value": 1}, {"from": "Mahadev", "to": "Frank Johnson", "value": 1}, {"from": "Mahadev", "to": "Dadabhai", "value": 1}, {"from": "Mahadev", "to": "Jinnah Saheb", "value": 1}, {"from": "Mahadev", "to": "Pherozeshah", "value": 1}, {"from": "Mahadev", "to": "Pearson", "value": 1}, {"from": "Mahadev", "to": "Gokhale", "value": 1}, {"from": "Mahadev", "to": "Rajaji", "value": 1}, {"from": "Mahadev", "to": "Charlie Andrews", "value": 1}, {"from": "Mahadev", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Mahadev", "to": "Shri Savarkar", "value": 1}, {"from": "Mahadev", "to": "Shek", "value": 1}, {"from": "Mahadev", "to": "De Valera", "value": 1}, {"from": "Mahadev", "to": "Jawaharlal", "value": 1}, {"from": "Netaji", "to": "Lady Anna", "value": 1}, {"from": "Netaji", "to": "Gurudev", "value": 1}, {"from": "Netaji", "to": "George Washington", "value": 1}, {"from": "Netaji", "to": "Linlithgow", "value": 1}, {"from": "Netaji", "to": "Quaid", "value": 1}, {"from": "Netaji", "to": "Herr Hitler", "value": 1}, {"from": "Netaji", "to": "Ranade", "value": 1}, {"from": "Netaji", "to": "Frank Johnson", "value": 1}, {"from": "Netaji", "to": "Dadabhai", "value": 1}, {"from": "Netaji", "to": "Jinnah Saheb", "value": 1}, {"from": "Netaji", "to": "Pherozeshah", "value": 1}, {"from": "Netaji", "to": "Pearson", "value": 1}, {"from": "Netaji", "to": "Gokhale", "value": 1}, {"from": "Netaji", "to": "Rajaji", "value": 1}, {"from": "Netaji", "to": "Charlie Andrews", "value": 1}, {"from": "Netaji", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Netaji", "to": "Shri Savarkar", "value": 1}, {"from": "Netaji", "to": "Shek", "value": 1}, {"from": "Netaji", "to": "De Valera", "value": 1}, {"from": "Netaji", "to": "Jawaharlal", "value": 1}, {"from": "Gurudev", "to": "Lady Anna", "value": 1}, {"from": "Gurudev", "to": "George Washington", "value": 1}, {"from": "Gurudev", "to": "Linlithgow", "value": 1}, {"from": "Gurudev", "to": "Quaid", "value": 1}, {"from": "Gurudev", "to": "Herr Hitler", "value": 1}, {"from": "Gurudev", "to": "Ranade", "value": 1}, {"from": "Gurudev", "to": "Frank Johnson", "value": 1}, {"from": "Gurudev", "to": "Dadabhai", "value": 1}, {"from": "Gurudev", "to": "Jinnah Saheb", "value": 1}, {"from": "Gurudev", "to": "Pherozeshah", "value": 1}, {"from": "Gurudev", "to": "Pearson", "value": 1}, {"from": "Gurudev", "to": "Gokhale", "value": 1}, {"from": "Gurudev", "to": "Rajaji", "value": 1}, {"from": "Gurudev", "to": "Charlie Andrews", "value": 1}, {"from": "Gurudev", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Gurudev", "to": "Shri Savarkar", "value": 1}, {"from": "Gurudev", "to": "Shek", "value": 1}, {"from": "Gurudev", "to": "De Valera", "value": 1}, {"from": "Gurudev", "to": "Jawaharlal", "value": 1}, {"from": "George Washington", "to": "Lady Anna", "value": 1}, {"from": "George Washington", "to": "Linlithgow", "value": 1}, {"from": "George Washington", "to": "Quaid", "value": 1}, {"from": "George Washington", "to": "Herr Hitler", "value": 1}, {"from": "George Washington", "to": "Tobias", "value": 1}, {"from": "George Washington", "to": "Ranade", "value": 1}, {"from": "George Washington", "to": "Frank Johnson", "value": 1}, {"from": "George Washington", "to": "Dadabhai", "value": 1}, {"from": "George Washington", "to": "Jinnah Saheb", "value": 1}, {"from": "George Washington", "to": "Pherozeshah", "value": 1}, {"from": "George Washington", "to": "Pearson", "value": 1}, {"from": "George Washington", "to": "Gokhale", "value": 1}, {"from": "George Washington", "to": "Rajaji", "value": 1}, {"from": "George Washington", "to": "Charlie Andrews", "value": 1}, {"from": "George Washington", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "George Washington", "to": "Shri Savarkar", "value": 1}, {"from": "George Washington", "to": "Shek", "value": 1}, {"from": "George Washington", "to": "De Valera", "value": 1}, {"from": "George Washington", "to": "Jawaharlal", "value": 1}, {"from": "Linlithgow", "to": "Lady Anna", "value": 1}, {"from": "Linlithgow", "to": "Quaid", "value": 1}, {"from": "Linlithgow", "to": "Herr Hitler", "value": 1}, {"from": "Linlithgow", "to": "Ranade", "value": 1}, {"from": "Linlithgow", "to": "Frank Johnson", "value": 1}, {"from": "Linlithgow", "to": "Dadabhai", "value": 1}, {"from": "Linlithgow", "to": "Jinnah Saheb", "value": 1}, {"from": "Linlithgow", "to": "Pherozeshah", "value": 1}, {"from": "Linlithgow", "to": "Pearson", "value": 1}, {"from": "Linlithgow", "to": "Gokhale", "value": 1}, {"from": "Linlithgow", "to": "Rajaji", "value": 1}, {"from": "Linlithgow", "to": "Charlie Andrews", "value": 1}, {"from": "Linlithgow", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Linlithgow", "to": "Shri Savarkar", "value": 1}, {"from": "Linlithgow", "to": "Shek", "value": 1}, {"from": "Linlithgow", "to": "De Valera", "value": 1}, {"from": "Linlithgow", "to": "Jawaharlal", "value": 1}, {"from": "Lady Anna", "to": "Jawaharlal", "value": 1}, {"from": "Lady Anna", "to": "Herr Hitler", "value": 1}, {"from": "Lady Anna", "to": "Ranade", "value": 1}, {"from": "Lady Anna", "to": "Frank Johnson", "value": 1}, {"from": "Lady Anna", "to": "Dadabhai", "value": 1}, {"from": "Lady Anna", "to": "Jinnah Saheb", "value": 1}, {"from": "Lady Anna", "to": "Pherozeshah", "value": 1}, {"from": "Lady Anna", "to": "Pearson", "value": 1}, {"from": "Lady Anna", "to": "Gokhale", "value": 1}, {"from": "Lady Anna", "to": "Rajaji", "value": 1}, {"from": "Lady Anna", "to": "Charlie Andrews", "value": 1}, {"from": "Lady Anna", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Lady Anna", "to": "Shri Savarkar", "value": 1}, {"from": "Lady Anna", "to": "Shek", "value": 1}, {"from": "Lady Anna", "to": "De Valera", "value": 1}, {"from": "Lady Anna", "to": "Quaid", "value": 1}, {"from": "Quaid", "to": "Herr Hitler", "value": 1}, {"from": "Quaid", "to": "Ranade", "value": 1}, {"from": "Quaid", "to": "Frank Johnson", "value": 1}, {"from": "Quaid", "to": "Dadabhai", "value": 1}, {"from": "Quaid", "to": "Jinnah Saheb", "value": 1}, {"from": "Quaid", "to": "Pherozeshah", "value": 1}, {"from": "Quaid", "to": "Pearson", "value": 1}, {"from": "Quaid", "to": "Gokhale", "value": 1}, {"from": "Quaid", "to": "Rajaji", "value": 1}, {"from": "Quaid", "to": "Charlie Andrews", "value": 1}, {"from": "Quaid", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Quaid", "to": "Shri Savarkar", "value": 1}, {"from": "Quaid", "to": "Shek", "value": 1}, {"from": "Quaid", "to": "De Valera", "value": 1}, {"from": "Quaid", "to": "Jawaharlal", "value": 1}, {"from": "Herr Hitler", "to": "Jawaharlal", "value": 1}, {"from": "Herr Hitler", "to": "Ranade", "value": 1}, {"from": "Herr Hitler", "to": "Frank Johnson", "value": 1}, {"from": "Herr Hitler", "to": "Dadabhai", "value": 1}, {"from": "Herr Hitler", "to": "Jinnah Saheb", "value": 1}, {"from": "Herr Hitler", "to": "Pherozeshah", "value": 1}, {"from": "Herr Hitler", "to": "Pearson", "value": 1}, {"from": "Herr Hitler", "to": "Gokhale", "value": 1}, {"from": "Herr Hitler", "to": "Rajaji", "value": 1}, {"from": "Herr Hitler", "to": "Charlie Andrews", "value": 1}, {"from": "Herr Hitler", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Herr Hitler", "to": "Shri Savarkar", "value": 1}, {"from": "Herr Hitler", "to": "Shek", "value": 1}, {"from": "Herr Hitler", "to": "De Valera", "value": 1}, {"from": "Tobias", "to": "De Valera", "value": 1}, {"from": "Ranade", "to": "Jawaharlal", "value": 1}, {"from": "Ranade", "to": "Frank Johnson", "value": 1}, {"from": "Ranade", "to": "Dadabhai", "value": 1}, {"from": "Ranade", "to": "Jinnah Saheb", "value": 1}, {"from": "Ranade", "to": "Pherozeshah", "value": 1}, {"from": "Ranade", "to": "Pearson", "value": 1}, {"from": "Ranade", "to": "Gokhale", "value": 1}, {"from": "Ranade", "to": "Rajaji", "value": 1}, {"from": "Ranade", "to": "Charlie Andrews", "value": 1}, {"from": "Ranade", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Ranade", "to": "Shri Savarkar", "value": 1}, {"from": "Ranade", "to": "Shek", "value": 1}, {"from": "Ranade", "to": "De Valera", "value": 1}, {"from": "Frank Johnson", "to": "Jawaharlal", "value": 1}, {"from": "Frank Johnson", "to": "Dadabhai", "value": 1}, {"from": "Frank Johnson", "to": "Jinnah Saheb", "value": 1}, {"from": "Frank Johnson", "to": "Pherozeshah", "value": 1}, {"from": "Frank Johnson", "to": "Pearson", "value": 1}, {"from": "Frank Johnson", "to": "Gokhale", "value": 1}, {"from": "Frank Johnson", "to": "Rajaji", "value": 1}, {"from": "Frank Johnson", "to": "Charlie Andrews", "value": 1}, {"from": "Frank Johnson", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Frank Johnson", "to": "Shri Savarkar", "value": 1}, {"from": "Frank Johnson", "to": "Shek", "value": 1}, {"from": "Frank Johnson", "to": "De Valera", "value": 1}, {"from": "Dadabhai", "to": "Jawaharlal", "value": 1}, {"from": "Dadabhai", "to": "Jinnah Saheb", "value": 1}, {"from": "Dadabhai", "to": "Pherozeshah", "value": 1}, {"from": "Dadabhai", "to": "Pearson", "value": 1}, {"from": "Dadabhai", "to": "Gokhale", "value": 1}, {"from": "Dadabhai", "to": "Rajaji", "value": 1}, {"from": "Dadabhai", "to": "Charlie Andrews", "value": 1}, {"from": "Dadabhai", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Dadabhai", "to": "Shri Savarkar", "value": 1}, {"from": "Dadabhai", "to": "Shek", "value": 1}, {"from": "Dadabhai", "to": "De Valera", "value": 1}, {"from": "Jinnah Saheb", "to": "Jawaharlal", "value": 1}, {"from": "Jinnah Saheb", "to": "Pherozeshah", "value": 1}, {"from": "Jinnah Saheb", "to": "Pearson", "value": 1}, {"from": "Jinnah Saheb", "to": "Gokhale", "value": 1}, {"from": "Jinnah Saheb", "to": "Rajaji", "value": 1}, {"from": "Jinnah Saheb", "to": "Charlie Andrews", "value": 1}, {"from": "Jinnah Saheb", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Jinnah Saheb", "to": "Shri Savarkar", "value": 1}, {"from": "Jinnah Saheb", "to": "Shek", "value": 1}, {"from": "Jinnah Saheb", "to": "De Valera", "value": 1}, {"from": "Pherozeshah", "to": "Jawaharlal", "value": 1}, {"from": "Pherozeshah", "to": "Pearson", "value": 1}, {"from": "Pherozeshah", "to": "Gokhale", "value": 1}, {"from": "Pherozeshah", "to": "Rajaji", "value": 1}, {"from": "Pherozeshah", "to": "Charlie Andrews", "value": 1}, {"from": "Pherozeshah", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Pherozeshah", "to": "Shri Savarkar", "value": 1}, {"from": "Pherozeshah", "to": "Shek", "value": 1}, {"from": "Pherozeshah", "to": "De Valera", "value": 1}, {"from": "Pearson", "to": "Jawaharlal", "value": 1}, {"from": "Pearson", "to": "Gokhale", "value": 1}, {"from": "Pearson", "to": "Rajaji", "value": 1}, {"from": "Pearson", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Pearson", "to": "Charlie Andrews", "value": 1}, {"from": "Pearson", "to": "Shri Savarkar", "value": 1}, {"from": "Pearson", "to": "Shek", "value": 1}, {"from": "Pearson", "to": "De Valera", "value": 1}, {"from": "Pierre Ceresole", "to": "Henry Eaton", "value": 1}, {"from": "Gokhale", "to": "Jawaharlal", "value": 1}, {"from": "Gokhale", "to": "Rajaji", "value": 1}, {"from": "Gokhale", "to": "Charlie Andrews", "value": 1}, {"from": "Gokhale", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Gokhale", "to": "Shri Savarkar", "value": 1}, {"from": "Gokhale", "to": "Shek", "value": 1}, {"from": "Gokhale", "to": "De Valera", "value": 1}, {"from": "Rajaji", "to": "Jawaharlal", "value": 1}, {"from": "Rajaji", "to": "Charlie Andrews", "value": 1}, {"from": "Rajaji", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Rajaji", "to": "Shri Savarkar", "value": 1}, {"from": "Rajaji", "to": "Shek", "value": 1}, {"from": "Rajaji", "to": "De Valera", "value": 1}, {"from": "Charlie Andrews", "to": "Sardar Vallabhbhai", "value": 1}, {"from": "Charlie Andrews", "to": "Shri Savarkar", "value": 1}, {"from": "Charlie Andrews", "to": "Shek", "value": 1}, {"from": "Charlie Andrews", "to": "De Valera", "value": 1}, {"from": "Charlie Andrews", "to": "Jawaharlal", "value": 1}, {"from": "Sardar Vallabhbhai", "to": "Jawaharlal", "value": 1}, {"from": "Sardar Vallabhbhai", "to": "Shri Savarkar", "value": 1}, {"from": "Sardar Vallabhbhai", "to": "Shek", "value": 1}, {"from": "Sardar Vallabhbhai", "to": "De Valera", "value": 1}, {"from": "Shri Savarkar", "to": "Jawaharlal", "value": 1}, {"from": "Shri Savarkar", "to": "Shek", "value": 1}, {"from": "Shri Savarkar", "to": "De Valera", "value": 1}, {"from": "Shek", "to": "Jawaharlal", "value": 1}, {"from": "Shek", "to": "De Valera", "value": 1}, {"from": "De Valera", "to": "Jawaharlal", "value": 1}]
community_data = [{"person": "Maulana Saheb", "community": "0"}, {"person": "Borah", "community": "1"}, {"person": "Mahadev", "community": "0"}, {"person": "Netaji", "community": "0"}, {"person": "Gurudev", "community": "0"}, {"person": "George Washington", "community": "2"}, {"person": "Linlithgow", "community": "0"}, {"person": "Lady Anna", "community": "0"}, {"person": "Quaid", "community": "0"}, {"person": "Herr Hitler", "community": "0"}, {"person": "Tobias", "community": "2"}, {"person": "Ranade", "community": "0"}, {"person": "Frank Johnson", "community": "0"}, {"person": "Dadabhai", "community": "0"}, {"person": "Jinnah Saheb", "community": "0"}, {"person": "Pherozeshah", "community": "0"}, {"person": "Pearson", "community": "0"}, {"person": "Pierre Ceresole", "community": "3"}, {"person": "Gokhale", "community": "0"}, {"person": "John Nevin Sayre", "community": "1"}, {"person": "Henry Eaton", "community": "3"}, {"person": "Rajaji", "community": "0"}, {"person": "Charlie Andrews", "community": "0"}, {"person": "Sardar Vallabhbhai", "community": "0"}, {"person": "Shri Savarkar", "community": "0"}, {"person": "Shek", "community": "0"}, {"person": "De Valera", "community": "2"}, {"person": "Jawaharlal", "community": "0"}]
import pandas as pd
import holoviews as hv
from holoviews import opts, dim
import numpy as np
hv.extension('bokeh')
hv.output(size=300)
##Read the edge data and community data for the chordial
df_json = pd.DataFrame(edge_data)
com_json = pd.DataFrame(community_data)
##Creating pandas dataframe from edge-data with columns source, target and value
df_links = pd.DataFrame(columns = ['source', 'target', 'value'])
df_links['source'] = df_json['from'].values.tolist()
df_links['target'] = df_json['to'].values.tolist()
df_links['value'] = df_json['value'].values.tolist()
##Creating pandas dataframe from community data to associate each node with a particular community
df_nodes = pd.DataFrame(columns=['index', 'source', 'community'])
df_nodes['source'] = com_json['person'].values.tolist()
df_nodes['community'] = com_json['community'].values.tolist()
df_nodes = df_nodes.sort_values('community')
df_nodes['index'] = [x for x in range(0, len(df_nodes.values))]
##Creating a mapper dictionary to assign each node to a numerical unique value
mapper = {}
df_dict = df_nodes.to_dict()
for items, values in df_dict['index'].items():
mapper[df_dict['source'][items]] = values
##Joining edge-data-frame with community data-frame to assign edge source with the source community
df_edge_with_community = pd.merge(df_links, df_nodes, on='source')
del df_edge_with_community['index']
df_edge_with_community.rename(columns={'community': 'edge_community'}, inplace=True)
##Assigning each node to numerical value
df_edge_with_community['source'] = df_edge_with_community['source'].map(mapper)
df_edge_with_community['target'] = df_edge_with_community['target'].map(mapper)
##Creating hv dataset from df_nodes
nodes = hv.Dataset(df_nodes, 'index')
##Creating Chord
chord = hv.Chord((df_edge_with_community, nodes)).select(value=(1, None))
chord.opts(
opts.Chord(cmap='Category10', edge_cmap='Category10', edge_color=dim('edge_community').str(),
labels='source', label_text_font_size='10px',label_text_font_style='bold', node_color=dim('community').str(),
edge_alpha= 0.8, node_selection_fill_color=None, edge_nonselection_line_alpha=0, edge_line_width=1,
edge_hover_line_color=None))