Receiving key error on Networkx color_map
I'm having trouble getting the color_map to work with my networkx graph. It's fairly simply code but won't seem to work. I've looked through other similar threads but no the solutions don't seem to work.
I have data that look like this:
edgelist_manual = [{'source': 'ABE', 'target': 'ATL', 'value': 851},
{'source': 'ABE', 'target': 'BHM', 'value': 1},
{'source': 'ABE', 'target': 'CLE', 'value': 805}]
edgelist = pd.DataFrame(edgelist_manual)
nodelist_manual = [{'source': 'ABE', 'value': '4807', 'group': 0},
{'source': 'ABI', 'value': '2660', 'group': 4},
{'source': 'ABQ', 'value': '41146', 'group': 2}]
nodelist = pd.DataFrame(nodelist_manual)
I run the code below, but my color_map keep screwing up. I just get a key error on the 'group' reference.
import itertools
import copy
import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt
nodelist = pd.read_csv('final_nodes.csv')
edgelist = pd.read_csv('final_edges.csv')
g = nx.Graph()
for i, elrow in edgelist.iterrows():
g.add_edge(elrow[0], elrow[1], attr_dict=elrow[2:].to_dict())
for i, nlrow in nodelist.iterrows():
g.node[nlrow['source']].update(nlrow[1:].to_dict())
color_map = {0: 'r', 1:'b', 2:'r', 3:'b', 4:'r', 5:'b'}
colors = [color_map[g.node[node]['group']] for node in g]
nx.draw(g, node_color=colors)
ax = plt.gca()
ax.collections[0].set_edgecolor("#555555")
plt.show()
The only difference from this and my code is that rather than creating the data manually I'm loading it from .csv. I've checked for trailing whitespaces on the feature labels but nothing. I don't understand indices well so I wonder if those are messing it up. Any ideas?
Thanks!
networkx colormap
|
show 1 more comment
I'm having trouble getting the color_map to work with my networkx graph. It's fairly simply code but won't seem to work. I've looked through other similar threads but no the solutions don't seem to work.
I have data that look like this:
edgelist_manual = [{'source': 'ABE', 'target': 'ATL', 'value': 851},
{'source': 'ABE', 'target': 'BHM', 'value': 1},
{'source': 'ABE', 'target': 'CLE', 'value': 805}]
edgelist = pd.DataFrame(edgelist_manual)
nodelist_manual = [{'source': 'ABE', 'value': '4807', 'group': 0},
{'source': 'ABI', 'value': '2660', 'group': 4},
{'source': 'ABQ', 'value': '41146', 'group': 2}]
nodelist = pd.DataFrame(nodelist_manual)
I run the code below, but my color_map keep screwing up. I just get a key error on the 'group' reference.
import itertools
import copy
import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt
nodelist = pd.read_csv('final_nodes.csv')
edgelist = pd.read_csv('final_edges.csv')
g = nx.Graph()
for i, elrow in edgelist.iterrows():
g.add_edge(elrow[0], elrow[1], attr_dict=elrow[2:].to_dict())
for i, nlrow in nodelist.iterrows():
g.node[nlrow['source']].update(nlrow[1:].to_dict())
color_map = {0: 'r', 1:'b', 2:'r', 3:'b', 4:'r', 5:'b'}
colors = [color_map[g.node[node]['group']] for node in g]
nx.draw(g, node_color=colors)
ax = plt.gca()
ax.collections[0].set_edgecolor("#555555")
plt.show()
The only difference from this and my code is that rather than creating the data manually I'm loading it from .csv. I've checked for trailing whitespaces on the feature labels but nothing. I don't understand indices well so I wonder if those are messing it up. Any ideas?
Thanks!
networkx colormap
1
Please provide the error message. Does this code you've provided also have the same error as your original code?
– Joel
Nov 20 at 21:00
1
Based on what you've said, I think the error is in the linecolors = [...]
, and it's giving an error forg.node[node]['group']
. An obvious step to take in debugging would be to see why it's giving you an error. So why not printg.node[node]
for a few nodes? Given the error, this appears to not be what you expect it to be, perhaps once you see what it is, you'll figure out the error.
– Joel
Nov 21 at 0:35
Yeah I get the same problem with the above code. (I did change ABI and ABQ to ABE just so it's sensible, but same error). When I print g.node[node] I get NameError: name 'node' is not defined
– Kees
Nov 21 at 14:40
1
So when you're printingg.node[node]
, what isnode
defined to be (hint - I don't think you've defined it before that test)? It's defined in your list comprehension, but it won't be defined outside that. You could for example dofor node in G: print(g.node[node])
– Joel
Nov 21 at 21:38
It would still be helpful if you provided the full error message. Please edit your question to include it.
– Joel
Nov 21 at 21:39
|
show 1 more comment
I'm having trouble getting the color_map to work with my networkx graph. It's fairly simply code but won't seem to work. I've looked through other similar threads but no the solutions don't seem to work.
I have data that look like this:
edgelist_manual = [{'source': 'ABE', 'target': 'ATL', 'value': 851},
{'source': 'ABE', 'target': 'BHM', 'value': 1},
{'source': 'ABE', 'target': 'CLE', 'value': 805}]
edgelist = pd.DataFrame(edgelist_manual)
nodelist_manual = [{'source': 'ABE', 'value': '4807', 'group': 0},
{'source': 'ABI', 'value': '2660', 'group': 4},
{'source': 'ABQ', 'value': '41146', 'group': 2}]
nodelist = pd.DataFrame(nodelist_manual)
I run the code below, but my color_map keep screwing up. I just get a key error on the 'group' reference.
import itertools
import copy
import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt
nodelist = pd.read_csv('final_nodes.csv')
edgelist = pd.read_csv('final_edges.csv')
g = nx.Graph()
for i, elrow in edgelist.iterrows():
g.add_edge(elrow[0], elrow[1], attr_dict=elrow[2:].to_dict())
for i, nlrow in nodelist.iterrows():
g.node[nlrow['source']].update(nlrow[1:].to_dict())
color_map = {0: 'r', 1:'b', 2:'r', 3:'b', 4:'r', 5:'b'}
colors = [color_map[g.node[node]['group']] for node in g]
nx.draw(g, node_color=colors)
ax = plt.gca()
ax.collections[0].set_edgecolor("#555555")
plt.show()
The only difference from this and my code is that rather than creating the data manually I'm loading it from .csv. I've checked for trailing whitespaces on the feature labels but nothing. I don't understand indices well so I wonder if those are messing it up. Any ideas?
Thanks!
networkx colormap
I'm having trouble getting the color_map to work with my networkx graph. It's fairly simply code but won't seem to work. I've looked through other similar threads but no the solutions don't seem to work.
I have data that look like this:
edgelist_manual = [{'source': 'ABE', 'target': 'ATL', 'value': 851},
{'source': 'ABE', 'target': 'BHM', 'value': 1},
{'source': 'ABE', 'target': 'CLE', 'value': 805}]
edgelist = pd.DataFrame(edgelist_manual)
nodelist_manual = [{'source': 'ABE', 'value': '4807', 'group': 0},
{'source': 'ABI', 'value': '2660', 'group': 4},
{'source': 'ABQ', 'value': '41146', 'group': 2}]
nodelist = pd.DataFrame(nodelist_manual)
I run the code below, but my color_map keep screwing up. I just get a key error on the 'group' reference.
import itertools
import copy
import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt
nodelist = pd.read_csv('final_nodes.csv')
edgelist = pd.read_csv('final_edges.csv')
g = nx.Graph()
for i, elrow in edgelist.iterrows():
g.add_edge(elrow[0], elrow[1], attr_dict=elrow[2:].to_dict())
for i, nlrow in nodelist.iterrows():
g.node[nlrow['source']].update(nlrow[1:].to_dict())
color_map = {0: 'r', 1:'b', 2:'r', 3:'b', 4:'r', 5:'b'}
colors = [color_map[g.node[node]['group']] for node in g]
nx.draw(g, node_color=colors)
ax = plt.gca()
ax.collections[0].set_edgecolor("#555555")
plt.show()
The only difference from this and my code is that rather than creating the data manually I'm loading it from .csv. I've checked for trailing whitespaces on the feature labels but nothing. I don't understand indices well so I wonder if those are messing it up. Any ideas?
Thanks!
networkx colormap
networkx colormap
asked Nov 20 at 17:01
Kees
4717
4717
1
Please provide the error message. Does this code you've provided also have the same error as your original code?
– Joel
Nov 20 at 21:00
1
Based on what you've said, I think the error is in the linecolors = [...]
, and it's giving an error forg.node[node]['group']
. An obvious step to take in debugging would be to see why it's giving you an error. So why not printg.node[node]
for a few nodes? Given the error, this appears to not be what you expect it to be, perhaps once you see what it is, you'll figure out the error.
– Joel
Nov 21 at 0:35
Yeah I get the same problem with the above code. (I did change ABI and ABQ to ABE just so it's sensible, but same error). When I print g.node[node] I get NameError: name 'node' is not defined
– Kees
Nov 21 at 14:40
1
So when you're printingg.node[node]
, what isnode
defined to be (hint - I don't think you've defined it before that test)? It's defined in your list comprehension, but it won't be defined outside that. You could for example dofor node in G: print(g.node[node])
– Joel
Nov 21 at 21:38
It would still be helpful if you provided the full error message. Please edit your question to include it.
– Joel
Nov 21 at 21:39
|
show 1 more comment
1
Please provide the error message. Does this code you've provided also have the same error as your original code?
– Joel
Nov 20 at 21:00
1
Based on what you've said, I think the error is in the linecolors = [...]
, and it's giving an error forg.node[node]['group']
. An obvious step to take in debugging would be to see why it's giving you an error. So why not printg.node[node]
for a few nodes? Given the error, this appears to not be what you expect it to be, perhaps once you see what it is, you'll figure out the error.
– Joel
Nov 21 at 0:35
Yeah I get the same problem with the above code. (I did change ABI and ABQ to ABE just so it's sensible, but same error). When I print g.node[node] I get NameError: name 'node' is not defined
– Kees
Nov 21 at 14:40
1
So when you're printingg.node[node]
, what isnode
defined to be (hint - I don't think you've defined it before that test)? It's defined in your list comprehension, but it won't be defined outside that. You could for example dofor node in G: print(g.node[node])
– Joel
Nov 21 at 21:38
It would still be helpful if you provided the full error message. Please edit your question to include it.
– Joel
Nov 21 at 21:39
1
1
Please provide the error message. Does this code you've provided also have the same error as your original code?
– Joel
Nov 20 at 21:00
Please provide the error message. Does this code you've provided also have the same error as your original code?
– Joel
Nov 20 at 21:00
1
1
Based on what you've said, I think the error is in the line
colors = [...]
, and it's giving an error for g.node[node]['group']
. An obvious step to take in debugging would be to see why it's giving you an error. So why not print g.node[node]
for a few nodes? Given the error, this appears to not be what you expect it to be, perhaps once you see what it is, you'll figure out the error.– Joel
Nov 21 at 0:35
Based on what you've said, I think the error is in the line
colors = [...]
, and it's giving an error for g.node[node]['group']
. An obvious step to take in debugging would be to see why it's giving you an error. So why not print g.node[node]
for a few nodes? Given the error, this appears to not be what you expect it to be, perhaps once you see what it is, you'll figure out the error.– Joel
Nov 21 at 0:35
Yeah I get the same problem with the above code. (I did change ABI and ABQ to ABE just so it's sensible, but same error). When I print g.node[node] I get NameError: name 'node' is not defined
– Kees
Nov 21 at 14:40
Yeah I get the same problem with the above code. (I did change ABI and ABQ to ABE just so it's sensible, but same error). When I print g.node[node] I get NameError: name 'node' is not defined
– Kees
Nov 21 at 14:40
1
1
So when you're printing
g.node[node]
, what is node
defined to be (hint - I don't think you've defined it before that test)? It's defined in your list comprehension, but it won't be defined outside that. You could for example do for node in G: print(g.node[node])
– Joel
Nov 21 at 21:38
So when you're printing
g.node[node]
, what is node
defined to be (hint - I don't think you've defined it before that test)? It's defined in your list comprehension, but it won't be defined outside that. You could for example do for node in G: print(g.node[node])
– Joel
Nov 21 at 21:38
It would still be helpful if you provided the full error message. Please edit your question to include it.
– Joel
Nov 21 at 21:39
It would still be helpful if you provided the full error message. Please edit your question to include it.
– Joel
Nov 21 at 21:39
|
show 1 more comment
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53397955%2freceiving-key-error-on-networkx-color-map%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53397955%2freceiving-key-error-on-networkx-color-map%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Please provide the error message. Does this code you've provided also have the same error as your original code?
– Joel
Nov 20 at 21:00
1
Based on what you've said, I think the error is in the line
colors = [...]
, and it's giving an error forg.node[node]['group']
. An obvious step to take in debugging would be to see why it's giving you an error. So why not printg.node[node]
for a few nodes? Given the error, this appears to not be what you expect it to be, perhaps once you see what it is, you'll figure out the error.– Joel
Nov 21 at 0:35
Yeah I get the same problem with the above code. (I did change ABI and ABQ to ABE just so it's sensible, but same error). When I print g.node[node] I get NameError: name 'node' is not defined
– Kees
Nov 21 at 14:40
1
So when you're printing
g.node[node]
, what isnode
defined to be (hint - I don't think you've defined it before that test)? It's defined in your list comprehension, but it won't be defined outside that. You could for example dofor node in G: print(g.node[node])
– Joel
Nov 21 at 21:38
It would still be helpful if you provided the full error message. Please edit your question to include it.
– Joel
Nov 21 at 21:39