gpt4 book ai didi

r - Wordcloud 基于 R 中的连续元数据显示颜色

转载 作者:行者123 更新时间:2023-12-04 01:45:36 24 4
gpt4 key购买 nike

我正在创建一个词云,其中词的大小基于频率,但我希望将词的颜色映射到第三个变量(压力,这是与每个词相关的压力量,数值或连续变量)。

我尝试了以下方法,它只给了我两种不同的颜色(黄色和紫色)​​,而我想要更光滑的颜色。我想要一些颜色范围,例如从绿色到红色的调色板。

df = data.frame(word = c("calling", "meeting", "conference", "contract", "negotiation", "email"),
n = c(20, 12, 4, 8, 10, 43),
stress = c(23, 30, 15, 40, 35, 15))
df = tbl_df(df)
wordcloud(words = df$word, freq = df$n, col = df$stress)

有谁知道如何处理这种连续的元数据,并在压力上升时让单词的颜色平滑变化?谢谢!

最佳答案

这是一个潜在的解决方案。您想为您的任务使用 wordcloud2 包。然后,我想你可以解决你的问题。由于我不知道您的真实数据,因此我创建了一个示例数据来演示原型(prototype)。

如果你有很多词,我不确定用连续变量(压力)添加颜色是否是个好主意。您可以做的一件事是使用 cut() 创建一个新的组变量。通过这种方式,您可以减少图形中使用的颜色数量。在这里,我创建了一个名为 color 的新列,其中包含 viridis 包中的五种颜色。

当您使用 wordcloud2() 时,您只需提供两件事。一个是数据,另一个是颜色。字体大小反射(reflect)了单词的频率,但没有指定。

mydf = data.frame(word = c("calling", "meeting", "conference", "contract", "negotiation",
"email", "friends", "chat", "text", "deal",
"business", "promotion", "discount", "users", "family"),
n = c(20, 12, 4, 8, 10, 43, 33, 5, 47, 28, 12, 9, 50, 31, 22),
stress = c(23, 30, 15, 40, 35, 15, 30, 18, 10, 5, 29, 38, 45, 8, 3))


word n stress
1 calling 20 23
2 meeting 12 30
3 conference 4 15
4 contract 8 40
5 negotiation 10 35
6 email 43 15
7 friends 33 30
8 chat 5 18
9 text 47 10
10 deal 28 5
11 business 12 29
12 promotion 9 38
13 discount 50 45
14 users 31 8
15 family 22 3

library(dplyr)
library(wordcloud2)
library(viridis)

mutate(mydf, color = cut(stress, breaks = c(0, 10, 20, 30, 40, Inf),
labels = c("#FDE725FF", "#73D055FF", "#1F968BFF",
"#2D708EFF", "#481567FF"),
include.lowest = TRUE)) -> temp

wordcloud2(data = temp, color = temp$color)

enter image description here

关于r - Wordcloud 基于 R 中的连续元数据显示颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43894416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com