Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当计数不是数据集中的一列(R)时,在ggplot中使用扩展_限制_R_Ggplot2_Geom Bar - Fatal编程技术网

当计数不是数据集中的一列(R)时,在ggplot中使用扩展_限制

当计数不是数据集中的一列(R)时,在ggplot中使用扩展_限制,r,ggplot2,geom-bar,R,Ggplot2,Geom Bar,我有一个数据集,我需要绘制一个条形图,显示某一列不同结果的计数。对于本例,我使用mtcars数据集 当我第一次尝试这样做时,我发现条上的标签在顶部被切断,所以我使用expand_limits参数给它们更多的空间。由于我希望能够将此代码用于刷新的数据,限制可能会改变,这就是我使用max()函数的原因 mtcars_cyl_counts <- as.data.frame(table(mtcars$cyl)) colnames(mtcars_cyl_counts)[1:2] <- c("c

我有一个数据集,我需要绘制一个条形图,显示某一列不同结果的计数。对于本例,我使用mtcars数据集

当我第一次尝试这样做时,我发现条上的标签在顶部被切断,所以我使用expand_limits参数给它们更多的空间。由于我希望能够将此代码用于刷新的数据,限制可能会改变,这就是我使用max()函数的原因

mtcars_cyl_counts <- as.data.frame(table(mtcars$cyl))
colnames(mtcars_cyl_counts)[1:2] <- c("cyl", "counts")

mtcars_cyl_counts %>% 
  arrange(desc(counts)) %>%
  ggplot(aes(x = reorder(cyl, -counts), y = counts)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = comma(counts), vjust = -0.5), size = 3) +
  expand_limits(y = max((mtcars_cyl_counts$counts) * 1.05))
但是,这将返回以下错误:

data.frame中出错(…,stringsAsFactors=FALSE): 找不到对象“计数”

我知道“counts”在技术上不在mtcars数据集中(这就是为什么如果我使用mtcars$counts,它也不起作用),但它是我在代码的其他地方为y定义使用的

那么,有没有一种方法来编写它以使其工作,或者有另一种方法来扩展垂直限制,以适应不同的数据集

(注意:在这些示例中,条形标签不会被切断,因为它们不是很大,但出于此目的,我只需要扩展限制,以便细节对工作不至关重要……

如果这有助于Megan

mtcars %>%
    count(cyl) %>% 
    arrange(-n) %>% 
    mutate(cyl = factor(cyl, cyl)) %>% 
    ggplot(aes(cyl, n)) +
    geom_text(vjust = -0.5, aes(label = n)) +
    geom_bar(stat = "identity") +
    expand_limits(y = max(table(mtcars$cyl) * 1.05))

是的,太好了!非常感谢。
mtcars %>%
    count(cyl) %>% 
    arrange(-n) %>% 
    mutate(cyl = factor(cyl, cyl)) %>% 
    ggplot(aes(cyl, n)) +
    geom_text(vjust = -0.5, aes(label = n)) +
    geom_bar(stat = "identity") +
    expand_limits(y = max(table(mtcars$cyl) * 1.05))