Ways to generate word-frequency plot w/ Python?
I have a file that contains a word and the frequency that it occurs. I would like to generate a sort of plot; I'm looking for a sort of 'bubble' like graph. The idea is that the size of these bubbles corresponds to the relative frequencies and the corresponding word is labeled on these bubbles. Does anyone know if this can be done with the standard matplotlib or anything similar?
python plot
add a comment |
I have a file that contains a word and the frequency that it occurs. I would like to generate a sort of plot; I'm looking for a sort of 'bubble' like graph. The idea is that the size of these bubbles corresponds to the relative frequencies and the corresponding word is labeled on these bubbles. Does anyone know if this can be done with the standard matplotlib or anything similar?
python plot
add a comment |
I have a file that contains a word and the frequency that it occurs. I would like to generate a sort of plot; I'm looking for a sort of 'bubble' like graph. The idea is that the size of these bubbles corresponds to the relative frequencies and the corresponding word is labeled on these bubbles. Does anyone know if this can be done with the standard matplotlib or anything similar?
python plot
I have a file that contains a word and the frequency that it occurs. I would like to generate a sort of plot; I'm looking for a sort of 'bubble' like graph. The idea is that the size of these bubbles corresponds to the relative frequencies and the corresponding word is labeled on these bubbles. Does anyone know if this can be done with the standard matplotlib or anything similar?
python plot
python plot
asked Nov 28 '18 at 1:45
Ayumu KasuganoAyumu Kasugano
21619
21619
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
There are lots of libraries out there.
Here's an example from WordCloud
#!/usr/bin/env python
"""
Minimal Example
===============
Generating a square wordcloud from the US constitution using default arguments.
"""
import os
from os import path
from wordcloud import WordCloud
# using word frequency list:
#word_freq = open("/tmp/word_freq.txt").read()
# say it looks like this:
word_freq = {'apple': 4, 'banana': 1, 'melon': 2, 'strawberry': 3, 'grape': 8}
text = " ".join([(k + " ")*v for k,v in word_freq.items()])
# Generate a word cloud image
wordcloud = WordCloud().generate(text)
# Display the generated image:
# the matplotlib way:
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
# lower max_font_size
wordcloud = WordCloud(max_font_size=40).generate(text)
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
# The pil way (if you don't have matplotlib)
# image = wordcloud.to_image()
# image.show()
WordCloud from different text:
Yes this looks nice, but this assumes that I have the entire text. All I have are the words and the frequency. Is there a way to work with this besides generating a dummy file?
– Ayumu Kasugano
Nov 28 '18 at 2:00
add a comment |
Let's say you have the frequency data in dict data
Following code should work
import os
from os import path
from wordcloud import WordCloud
import matplotlib.pyplot as plt
data = {
'Bla': 10,
'Bl': 2,
'cold' : 9,
'random': 6
}
wordcloud = WordCloud(max_font_size=40).generate(" ".join([(k + ' ') * v for k,v in data.items()]))
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
add a comment |
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%2f53510855%2fways-to-generate-word-frequency-plot-w-python%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
There are lots of libraries out there.
Here's an example from WordCloud
#!/usr/bin/env python
"""
Minimal Example
===============
Generating a square wordcloud from the US constitution using default arguments.
"""
import os
from os import path
from wordcloud import WordCloud
# using word frequency list:
#word_freq = open("/tmp/word_freq.txt").read()
# say it looks like this:
word_freq = {'apple': 4, 'banana': 1, 'melon': 2, 'strawberry': 3, 'grape': 8}
text = " ".join([(k + " ")*v for k,v in word_freq.items()])
# Generate a word cloud image
wordcloud = WordCloud().generate(text)
# Display the generated image:
# the matplotlib way:
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
# lower max_font_size
wordcloud = WordCloud(max_font_size=40).generate(text)
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
# The pil way (if you don't have matplotlib)
# image = wordcloud.to_image()
# image.show()
WordCloud from different text:
Yes this looks nice, but this assumes that I have the entire text. All I have are the words and the frequency. Is there a way to work with this besides generating a dummy file?
– Ayumu Kasugano
Nov 28 '18 at 2:00
add a comment |
There are lots of libraries out there.
Here's an example from WordCloud
#!/usr/bin/env python
"""
Minimal Example
===============
Generating a square wordcloud from the US constitution using default arguments.
"""
import os
from os import path
from wordcloud import WordCloud
# using word frequency list:
#word_freq = open("/tmp/word_freq.txt").read()
# say it looks like this:
word_freq = {'apple': 4, 'banana': 1, 'melon': 2, 'strawberry': 3, 'grape': 8}
text = " ".join([(k + " ")*v for k,v in word_freq.items()])
# Generate a word cloud image
wordcloud = WordCloud().generate(text)
# Display the generated image:
# the matplotlib way:
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
# lower max_font_size
wordcloud = WordCloud(max_font_size=40).generate(text)
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
# The pil way (if you don't have matplotlib)
# image = wordcloud.to_image()
# image.show()
WordCloud from different text:
Yes this looks nice, but this assumes that I have the entire text. All I have are the words and the frequency. Is there a way to work with this besides generating a dummy file?
– Ayumu Kasugano
Nov 28 '18 at 2:00
add a comment |
There are lots of libraries out there.
Here's an example from WordCloud
#!/usr/bin/env python
"""
Minimal Example
===============
Generating a square wordcloud from the US constitution using default arguments.
"""
import os
from os import path
from wordcloud import WordCloud
# using word frequency list:
#word_freq = open("/tmp/word_freq.txt").read()
# say it looks like this:
word_freq = {'apple': 4, 'banana': 1, 'melon': 2, 'strawberry': 3, 'grape': 8}
text = " ".join([(k + " ")*v for k,v in word_freq.items()])
# Generate a word cloud image
wordcloud = WordCloud().generate(text)
# Display the generated image:
# the matplotlib way:
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
# lower max_font_size
wordcloud = WordCloud(max_font_size=40).generate(text)
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
# The pil way (if you don't have matplotlib)
# image = wordcloud.to_image()
# image.show()
WordCloud from different text:
There are lots of libraries out there.
Here's an example from WordCloud
#!/usr/bin/env python
"""
Minimal Example
===============
Generating a square wordcloud from the US constitution using default arguments.
"""
import os
from os import path
from wordcloud import WordCloud
# using word frequency list:
#word_freq = open("/tmp/word_freq.txt").read()
# say it looks like this:
word_freq = {'apple': 4, 'banana': 1, 'melon': 2, 'strawberry': 3, 'grape': 8}
text = " ".join([(k + " ")*v for k,v in word_freq.items()])
# Generate a word cloud image
wordcloud = WordCloud().generate(text)
# Display the generated image:
# the matplotlib way:
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
# lower max_font_size
wordcloud = WordCloud(max_font_size=40).generate(text)
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
# The pil way (if you don't have matplotlib)
# image = wordcloud.to_image()
# image.show()
WordCloud from different text:
edited Nov 28 '18 at 2:22
answered Nov 28 '18 at 1:55
keithpjolleykeithpjolley
1,060915
1,060915
Yes this looks nice, but this assumes that I have the entire text. All I have are the words and the frequency. Is there a way to work with this besides generating a dummy file?
– Ayumu Kasugano
Nov 28 '18 at 2:00
add a comment |
Yes this looks nice, but this assumes that I have the entire text. All I have are the words and the frequency. Is there a way to work with this besides generating a dummy file?
– Ayumu Kasugano
Nov 28 '18 at 2:00
Yes this looks nice, but this assumes that I have the entire text. All I have are the words and the frequency. Is there a way to work with this besides generating a dummy file?
– Ayumu Kasugano
Nov 28 '18 at 2:00
Yes this looks nice, but this assumes that I have the entire text. All I have are the words and the frequency. Is there a way to work with this besides generating a dummy file?
– Ayumu Kasugano
Nov 28 '18 at 2:00
add a comment |
Let's say you have the frequency data in dict data
Following code should work
import os
from os import path
from wordcloud import WordCloud
import matplotlib.pyplot as plt
data = {
'Bla': 10,
'Bl': 2,
'cold' : 9,
'random': 6
}
wordcloud = WordCloud(max_font_size=40).generate(" ".join([(k + ' ') * v for k,v in data.items()]))
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
add a comment |
Let's say you have the frequency data in dict data
Following code should work
import os
from os import path
from wordcloud import WordCloud
import matplotlib.pyplot as plt
data = {
'Bla': 10,
'Bl': 2,
'cold' : 9,
'random': 6
}
wordcloud = WordCloud(max_font_size=40).generate(" ".join([(k + ' ') * v for k,v in data.items()]))
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
add a comment |
Let's say you have the frequency data in dict data
Following code should work
import os
from os import path
from wordcloud import WordCloud
import matplotlib.pyplot as plt
data = {
'Bla': 10,
'Bl': 2,
'cold' : 9,
'random': 6
}
wordcloud = WordCloud(max_font_size=40).generate(" ".join([(k + ' ') * v for k,v in data.items()]))
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
Let's say you have the frequency data in dict data
Following code should work
import os
from os import path
from wordcloud import WordCloud
import matplotlib.pyplot as plt
data = {
'Bla': 10,
'Bl': 2,
'cold' : 9,
'random': 6
}
wordcloud = WordCloud(max_font_size=40).generate(" ".join([(k + ' ') * v for k,v in data.items()]))
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
answered Nov 28 '18 at 2:17
KrishnaKrishna
6021515
6021515
add a comment |
add a comment |
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.
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%2f53510855%2fways-to-generate-word-frequency-plot-w-python%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