我正在使用来自http://www.jasondavies.com/wordcloud/#http%3A%2F%2Fen.wikipedia.org%2Fwiki%2F%7Bword%7D=cloud的d3示例来构建我自己的单词云.
我想要做的就是根据单词表示的对象的属性为单词添加一些颜色属性.
例如,有4个单词 - 美国,印度,英国和德国 - 我使用阈值来设置单词的颜色 - 让我们说这更像是根据人口密度设置颜色.
然而,这绝不会影响字体的大小 - 这可能表示该国的土地面积.
我的问题是这些单词彼此重叠.
我想知道我做错了什么 - 看看这段代码 - 我的'画'功能.我在这里做错了什么?
draw: function(countries) {
var cctrplt = {BuOrPuRd: {
4: ["#9ebcda","#e32636","#08306b", "#ffbf00"]
}};
var fillthr =
d3.scale.threshold()
.domain([2, 5, 10])
.range(cctrplt.BuOrPuRd[4]);
d3.select("#ddTagCloudContentRoot").append("svg")
.attr("width", width)
.attr("height", height)
.append("g")
.attr("transform", "translate(300,300)")
.selectAll("text")
.data(countries)
.enter().append("text")
.style("font-size", function(d) { return (d.size) + "px"; })
.style("font-family", "Impact")
.style("fill", function(k,i) { var ccode = colours_list[k.text]; return fillthr(ccode); })
.attr("text-anchor", "middle")
.attr("transform", function(d) {
return "translate(" + [d.x, …
Run Code Online (Sandbox Code Playgroud) 我想在angular/javascript中创建一个词云.我已经看了一些现有的实现,比如https://www.jasondavies.com/wordcloud/#%2F%2Fwww.jasondavies.com%2Fwordcloud%2Fabout%2F和其他简单的单词云.
我对这些实现有一些问题:
有时候我希望能够在文本框周围绘制文字云,即在文字云的中心留下一些空间(矩形或圆形),如下图所示,在文本框周围绘制wordcloud而不重叠它.
有人可以建议任何链接或算法来研究.
(对于第二个要求,我尝试更改Jason davies提供的代码,将内部边界应用于单词云,但我无法)
我试图以一种令人赏心悦目的方式制作几个wordcloud的子图/方面.
问题:
wordcloud
正确地组合-outputsggplot2
允许刻面但产生不令人满意的结果(丑陋的定位)我试过两种方法来创建这些wordcloud-subplots.
library(dplyr)
library(janeaustenr)
library(tidytext)
df <- austen_books() %>%
unnest_tokens(word, text) %>%
anti_join(stop_words, by = "word") %>%
group_by(book) %>%
count(word) %>%
top_n(100, n)
Run Code Online (Sandbox Code Playgroud)
wordcloud
包和基础R:library(wordcloud)
par(mfrow = c(2,2))
png("jane_austen_wordclouds.png")
df %>%
filter(book == "Sense & Sensibility") %>%
with(wordcloud(word, n))
df %>%
filter(book == "Pride & Prejudice") %>%
with(wordcloud(word, n))
df %>%
filter(book == "Mansfield Park") %>%
with(wordcloud(word, n))
df %>%
filter(book == "Emma") %>%
with(wordcloud(word, n))
title( "Jane …
Run Code Online (Sandbox Code Playgroud) 我有一个使用XML包从Twitter搜索创建的1,500行向量.然后我将它转换为语料库以与tm包一起使用.我想最终用这些单词的一些(最常见的)创建一个wordcloud,所以我将它转换为TermDocumentMatrix,以便能够找到具有最小频率的术语.我创建了对象"a",这是这些术语的列表.
a <- findFreqTerms(mydata.dtm, 10)
Run Code Online (Sandbox Code Playgroud)
wordcloud包不适用于文档矩阵.所以现在,我想过滤原始向量,只包括"a"对象中包含的单词(如果我使用对象本身,当然,我只有每个常用单词的一个实例).
任何建议都非常感谢.
这似乎是一个简单的问题,但我似乎无法在任何地方找到答案.在R {wordcloud}包中,wordcloud
函数有一个可以输入的比例值.完整文档(此处:https://cran.r-project.org/web/packages/wordcloud/wordcloud.pdf)说:"长度为2的向量,表示单词大小的范围."
我似乎无法理解这些价值观,但我找不到任何其他文件.例如,示例有scale=c(4,.5)
或scale=c(8,.3)
.这些数字是什么意思?
我稍微弄乱了不同的值,但我似乎无法弄清楚这个模式.在此先感谢任何帮助,赛斯
我有一个数据帧如下
Int64Index: 14830 entries, 25791 to 10668
Data columns (total 2 columns):
word 14830 non-null object
coef 14830 non-null float64
dtypes: float64(1), object(1)
Run Code Online (Sandbox Code Playgroud)
我尝试用coef作为频率制作文字云,而不是数量充足
text = df['word']
WordCloud.generate_from_text(text)
TypeError: generate_from_text() missing 1 required positional argument: 'text'
Run Code Online (Sandbox Code Playgroud)
要么
text = np.array(df['word'])
WordCloud.generate_from_text(text)
TypeError: generate_from_text() missing 1 required positional argument: 'text'
Run Code Online (Sandbox Code Playgroud)
我怎样才能改进这个代码并制作像这样的文字云
from wordcloud import WordCloud
wordcloud = WordCloud( ranks_only= frequency).generate(text)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
Run Code Online (Sandbox Code Playgroud)
谢谢
我看到这个功能可以在线生成词云,但是我无法弄清楚如何更改def_random_func
. 假设我想要橙色,现在代码总是生成绿色的词云。这是代码:
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS
def random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None):
h = int(360.0 * 45.0 / 255.0)
s = int(100.0 * 255.0 / 255.0)
l = int(100.0 * float(random_state.randint(60, 120)) / 255.0)
return "hsl({}, {}%, {}%)".format(h, s, l)
file_content = open("rr.txt").read()
wordcloud = WordCloud(font_path=r'C:\Windows\Fonts\Verdana.ttf',
stopwords=STOPWORDS,
background_color='white',
width=1200,
height=1000,
color_func=random_color_func
).generate(file_content)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
Run Code Online (Sandbox Code Playgroud) 我有一个Pandas数据框,有一列:犯罪类型.该列包含16种不同的"犯罪类别",我希望将其视为文字云,其中的单词根据数据框中的频率进行调整.
我尝试使用以下代码执行此操作:
将数据带入:
fields = ['Crime type']
text2 = pd.read_csv('allCrime.csv', usecols=fields)
Run Code Online (Sandbox Code Playgroud)
要生成单词云:
wordcloud2 = WordCloud().generate(text2)
# Generate plot
plt.imshow(wordcloud2)
plt.axis("off")
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
TypeError: expected string or bytes-like object
Run Code Online (Sandbox Code Playgroud)
我能够使用以下代码从完整数据集创建一个早期的词云,但我希望单词cloud只生成特定列中的单词"犯罪类型"('allCrime.csv'包含大约13列) :
text = open('allCrime.csv').read()
wordcloud = WordCloud().generate(text)
# Generate plot
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
Run Code Online (Sandbox Code Playgroud)
我是Python和Pandas的新手(并且通常编码!)所以感谢所有的帮助.
我是 python 新手,我使用 wordcloud pkg。
我根据我在字典中的频率生成了一个词云frequencies
,键=词和值=词的频率。
wordcloud 可以在color_funct
参数中接收一个函数。此类功能可用于为云上的文字制作您自己的颜色图。作为示例,我使用了my_tf_color_func
.
wordcloud = WordCloud(background_color="white", max_words=1000, mask=motog3_coloring,
max_font_size=1000, random_state=1, relative_scaling=.6, regexp="\w[\%\-\(\)\w']+",
collocations=False, color_func=my_tf_color_func)
Run Code Online (Sandbox Code Playgroud)
在my_tf_color_func
我想根据属性中的频率为每个单词着色frequencies
。my_tf_color_func
鉴于有关此问题的报告,我现在可以执行以下操作
def my_tf_color_func(word, font_size, position, orientation, random_state=None, **kwargs):
return "hsl(%d, 80%%, 50%%)" % (360 * frequencies[word])
Run Code Online (Sandbox Code Playgroud)
但是字典frequencies
必须通过,我该怎么做?我必须在哪里以及如何传递 dictfrequencies
才能在my_tf_color_func
.
我尝试了一些方法,但我做不到。
非常感谢
目前,我有一个包含单词和权重 (tf*idf) 的数据框,我想显示在 wordcloud 中按权重排列的单词。
数据框位于左图。
def generate_wordcloud(words_tem):
word_cloud = WordCloud(width = 512, height = 512, background_color='white', stopwords= None, max_words=20).generate(words_tem)
plt.figure(figsize=(10,8),facecolor = 'white', edgecolor='blue')
plt.imshow(word_cloud, interpolation='bilinear')
plt.axis('off')
plt.tight_layout(pad=0)
plt.show()
tfidf = TfidfVectorizer(data, lowercase = False)
tfs = tfidf.fit_transform([data])
feature_names = tfidf.get_feature_names()
df = pd.DataFrame(tfs.T.toarray(), index=feature_names, columns= ['weight'])
df = df.sort_values(by = 'weight', ascending = False)
word_lists = df.index.values
unique_str = ' '.join(word_lists)
print(df[0:20])
generate_wordcloud(unique_str)
Run Code Online (Sandbox Code Playgroud)
word-cloud ×10
python ×5
r ×3
javascript ×2
colors ×1
corpus ×1
d3.js ×1
dataframe ×1
facet ×1
ggplot2 ×1
nlp ×1
overlap ×1
pandas ×1
wordle-game ×1