【问题标题】:Create a plot with geom_col and show only part of the graph使用 geom_col 创建一个图并仅显示图形的一部分
【发布时间】:2021-01-01 15:44:40
【问题描述】:

我有一个与此类似的数据集,并使用 ggplot 创建了一个条形图,以显示一个人说出某个单词的次数。

name <- c('Luca', 'Marco','Alberto', 'Luca', 'Marco', 'Luca', 'Alberto', 'Marco')
word <- c('pizza', 'cola', 'pizza','cola','pizza', 'good', 'good', 'chips')
count <- c(3,5,6,4,1,3,6,2)
  
ggplot(df, aes(y=word, x=count, fill=name)) + 
  geom_col()

image

这就是结果。但是,我只想显示图像的一部分,即前两个最常用的单词。这就是结果。但是我只想显示图像的一部分(前两个最常用的词)。 这是对我的真实数据库的简化,因为在那个数据库中我有大约 3 万个单词,我只想取前 20 个单词。 谢谢大家

【问题讨论】:

  • 可以this postthis one 帮忙吗?
  • 我正在寻找一个在创建绘图时直接输入的命令,因为我必须考虑整个数据集然后放大前20个单词

标签: r image ggplot2 geom-col


【解决方案1】:

这是一个基于table 的解决方案,用于获取n 最常用的单词,然后绘制它们。
但首先是测试数据集,因为在问题中未创建 data.frame。

name <- c('Luca', 'Marco','Alberto', 'Luca', 'Marco', 'Luca', 'Alberto', 'Marco')
word <- c('pizza', 'cola', 'pizza','cola','pizza', 'good', 'good', 'chips')
count <- c(3,5,6,4,1,3,6,2)
df <- data.frame(name, word, count)

现在绘图功能fun。默认的n = 2 将绘制两个最常用的词,因此我在调用函数时不需要传递该值,仅在绘制另一个数量的最常用词时才需要。

library(ggplot2)

fun <- function(X, col, count, fill, n = 2){
  freq <- sort(table(X[[col]]), decreasing = TRUE)[seq_len(n)]
  i <- which(X[[col]] %in% names(freq))
  df_plot <- X[i, , drop = FALSE]
  g <- ggplot(df_plot, aes(get(col), get(count), fill = get(fill))) + 
    geom_col() +
    labs(x = col, y = count, fill = fill) +
    coord_flip()
  g
}

fun(df, "word", "count", "name")

【讨论】:

  • 好的,谢谢朋友。它更好,但我不明白为什么它在我的数据集中不起作用。我修改了您的命令以适应我的数据集的特征,但它没有显示一些频率非常高的单词。你认为可能是什么问题?感谢您的帮助
  • @GIORIGO sort(table(etc))[seq_len] 是否返回您想要的顶部 n 字词?
  • 不是全部,只是一部分。我不知道,我想我会选择其他代表。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
  • 2012-03-30
  • 2020-01-02
  • 2013-09-16
  • 2011-11-09
  • 1970-01-01
相关资源
最近更新 更多