Forum Discussion
Slicers as input for Python script
- 6 years ago
Hey jmarcrum ,
this code is maybe doing what you are looking for:
# The following code to create a dataframe and remove duplicated rows is always executed and acts as a preamble for your script: # dataset = pandas.DataFrame(TmName, OppName, Selection1, Selection2) # dataset = dataset.drop_duplicates() # Paste or type your script code here: import networkx import matplotlib.pyplot as plt tm1_l = list(dataset.Selection1) tm1 = tm1_l[1] tm2_l = list(dataset.Selection2) tm2 = tm2_l[1] # load edges file from csv left = list(dataset.TmName) right = list(dataset.OppName) graph = networkx.Graph() graph.add_edges_from(list(zip(left, right))) # Test single path shortest_path = networkx.shortest_path(graph, tm1, tm2) edges_2team = dataset[dataset.TmName.isin(shortest_path)] left_2team= list(edges_2team['TmName']) right_2team = list(edges_2team['OppName']) graph_2team = networkx.Graph() graph_2team.add_edges_from(list(zip(left_2team, right_2team))) plt.title(tm1 + " " + tm2) networkx.draw(graph_2team, with_labels=True) plt.show()as it allows to create this chart:
Be aware of this line:
networkx.draw(graph_2team, with_labels=True)
Hopefully, this is what you are looking for.Regards,
Tom
Hey jmarcrum ,
you can add the column that "feeds" the slicer to the python script values.
Another option is to create a measure using DAX if the column originates from an unrelated table. You can use SELECTEDVALUE('<tablename>'[columname] , <defaultvalue>), see here: https://dax.guide/selectedvalue/
Hopefully, this provides some ideas to tackle your challenge.
Regards,
Tom
Stay safe, stay healthy
- jmarcrum6 years agoHelper II
Hi Tom -
I went the second route, using DAX on the disconnected table, but I'm getting an error. Do you know what might be wrong?
You can see the edited code as well as the error in the middle. It think my imported measures aren't objects?
My pbix file is here:
https://www.dropbox.com/s/1qm5b3l73c01tbr/To_Publish4.pbix?dl=0
- TomMartens6 years agoSuper User
Hey jmarcrum ,
please provide a pbix that creates a working network graph, without trying to incorporate the unrelated table or SELECTEDVALUE solutions that I mentioned.
Regards,
Tom- TomMartens6 years agoSuper User
Hey jmarcrum ,
I couldn't resist 🙂
this code
# Paste or type your script code here: import networkx import matplotlib.pyplot as plt tm1_l = list(dataset.Selection1) tm1 = tm1_l[1] tm2_l = list(dataset.Selection2) tm2 = tm2_l[1] # load edges file from csv left = list(dataset.TmName) right = list(dataset.OppName) graph = networkx.Graph() graph.add_edges_from(list(zip(left, right))) # Test single path # shortest_path = networkx.shortest_path(graph, tm1, tm2) # #edges_2team = dataset[dataset.TmName.isin(shortest_path)] #left_2team= list(edges_2team['TmName']) #right_2team = list(edges_2team['OppName']) #graph_2team = networkx.Graph() #graph_2team.add_edges_from(list(zip(left_2team, right_2team))) plt.title(tm1 + " " + tm2) networkx.draw(graph, with_labels=False) plt.show()Creates this chart (the green rectangles are added using snagit 🙂
As you can see the measures are working to select something.
Please be aware that my code above is transforming the dataframe columns to a list, to select the 1st value to create the title.
I'm using plt.title as .draw() turns off the axis, where .draw_newtworkx() is not doing this.
Hopefully, this provides some ideas about what is causing the issues
Regards,
Tom