gpt4 book ai didi

r - 具有重复因子的 ggplot 组的绘图顺序

转载 作者:行者123 更新时间:2023-12-01 13:32:16 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





ggplot: Order bars in faceted bar chart per facet

(4 个回答)


4年前关闭。




我正在玩一些文本分析,并尝试使用逆文档频率(数值)显示每本书的热门词。我一直在关注 TidyText 挖掘,但使用的是哈利波特。

一些书之间的顶级单词(使用 IDF)是相同的(例如 Lupin 或 Griphook),并且在绘图时,顺序使用该单词的最大 IDF。例如,抓钩是魔法石和死亡圣器中的关键词。它在死亡圣器中的值(value)为 0.0007,但只有 0.0002,但被列为魔法石的最高值(value)。

ggplot output

hp.plot <- hp.words %>%
arrange(desc(tf_idf)) %>%
mutate(word = factor(word, levels = rev(unique(word))))

##For correct ordering of books
hp.plot$book <- factor(hp.plot$book, levels = c('Sorcerer\'s Stone', 'Chamber of Secrets',
'Prisoner of Azkhaban', 'Goblet of Fire',
'Order of the Phoenix', 'Half-Blood Prince',
'Deathly Hallows'))

hp.plot %>%
group_by(book) %>%
top_n(10) %>%
ungroup %>%
ggplot(aes(x=word, y=tf_idf, fill = book, group = book)) +
geom_col(show.legend = FALSE) +
labs(x = NULL, y = "tf-idf") +
facet_wrap(~book, scales = "free") +
coord_flip()

here's数据框的图像供您引用。

我预先尝试过排序,但这似乎不起作用。有任何想法吗?

编辑: CSV is here

最佳答案

reorder()函数将按指定变量对因子重新排序(请参阅 ?reorder )。

插入 mutate(word = reorder(word, tf_idf))ungroup()在绘图前的最后一个块中应按 tf_idf 重新排序.我没有你的数据样本,但使用 janeaustenr包,这样做是一样的:

library(tidytext)
library(janeaustenr)
library(dplyr)

book_words <- austen_books() %>%
unnest_tokens(word, text) %>%
count(book, word, sort = TRUE) %>%
ungroup()

total_words <- book_words %>%
group_by(book) %>%
summarize(total = sum(n))

book_words <- left_join(book_words, total_words)

book_words <- book_words %>%
bind_tf_idf(word, book, n)


library(ggplot2)
book_words %>%
group_by(book) %>%
top_n(10) %>%
ungroup() %>%
mutate(word = reorder(word, tf_idf)) %>%
ggplot(aes(x = word, y = tf_idf, fill = book, group = book)) +
geom_col(show.legend = FALSE) +
labs(x = NULL, y = "tf-idf") +
facet_wrap(~book, scales = "free") +
coord_flip()

关于r - 具有重复因子的 ggplot 组的绘图顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45287010/

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