标签: word-cloud

d3字云 - 发生了太多的重叠

我正在使用来自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)

javascript overlap word-cloud

5
推荐指数
1
解决办法
1924
查看次数

在javascript中具有特定形状的词云

我想在angular/javascript中创建一个词云.我已经看了一些现有的实现,比如https://www.jasondavies.com/wordcloud/#%2F%2Fwww.jasondavies.com%2Fwordcloud%2Fabout%2F和其他简单的单词云.

我对这些实现有一些问题:

我希望能够以不同的形状绘制wordcloud. 在此输入图像描述

有时候我希望能够在文本框周围绘制文字云,即在文字云的中心留下一些空间(矩形或圆形),如下图所示,在文本框周围绘制wordcloud而不重叠它.

在此输入图像描述

有人可以建议任何链接或算法来研究.

(对于第二个要求,我尝试更改Jason davies提供的代码,将内部边界应用于单词云,但我无法)

javascript wordle-game word-cloud d3.js

5
推荐指数
0
解决办法
1309
查看次数

与wordclouds的subplot/facets

我试图以一种令人赏心悦目的方式制作几个wordcloud的子图/方面.

问题:

  1. 我不能让基础R wordcloud正确地组合-outputs
  2. 制作wordclouds ggplot2允许刻面但产生不令人满意的结果(丑陋的定位)

我试过两种方法来创建这些wordcloud-subplots.

1.我创建一个示例数据集(以下这里):

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)

2.我的第一次尝试使用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)

r facet ggplot2 word-cloud

5
推荐指数
1
解决办法
1410
查看次数

从R中的语料库创建单词的子集

我有一个使用XML包从Twitter搜索创建的1,500行向量.然后我将它转换为语料库以与tm包一起使用.我想最终用这些单词的一些(最常见的)创建一个wordcloud,所以我将它转换为TermDocumentMatrix,以便能够找到具有最小频率的术语.我创建了对象"a",这是这些术语的列表.

a <- findFreqTerms(mydata.dtm, 10)
Run Code Online (Sandbox Code Playgroud)

wordcloud包不适用于文档矩阵.所以现在,我想过滤原始向量,只包括"a"对象中包含的单词(如果我使用对象本身,当然,我只有每个常用单词的一个实例).

任何建议都非常感谢.

r corpus word-cloud

4
推荐指数
1
解决办法
4046
查看次数

R {wordcloud}包,比例值代表什么?

这似乎是一个简单的问题,但我似乎无法在任何地方找到答案.在R {wordcloud}包中,wordcloud函数有一个可以输入的比例值.完整文档(此处:https://cran.r-project.org/web/packages/wordcloud/wordcloud.pdf)说:"长度为2的向量,表示单词大小的范围."

我似乎无法理解这些价值观,但我找不到任何其他文件.例如,示例有scale=c(4,.5)scale=c(8,.3).这些数字是什么意思?

我稍微弄乱了不同的值,但我似乎无法弄清楚这个模式.在此先感谢任何帮助,赛斯

r word-cloud

4
推荐指数
1
解决办法
2336
查看次数

从频率python数据框架的WordCloud

我有一个数据帧如下

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)

谢谢

python word-cloud

4
推荐指数
2
解决办法
1万
查看次数

带有自定义随机颜色生成的python中的词云

我看到这个功能可以在线生成词云,但是我无法弄清楚如何更改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)

python colors word-cloud

4
推荐指数
1
解决办法
6689
查看次数

从单列Pandas数据帧生成单词云

我有一个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 dataframe word-cloud pandas

4
推荐指数
3
解决办法
1万
查看次数

Python wordcloud 按词频颜色

我是 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我想根据属性中的频率为每个单词着色frequenciesmy_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.

我尝试了一些方法,但我做不到。

非常感谢

python keyword-argument word-cloud

4
推荐指数
1
解决办法
3192
查看次数

如何从 Python 中的数据帧显示 wordcloud

目前,我有一个包含单词和权重 (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)

在此处输入图片说明

python nlp word-cloud

4
推荐指数
1
解决办法
6144
查看次数