如何重塑 R 中的条形图?

How can I reshape the bar graph in R?

我想调整图表的大小:

act_df %>%
ggplot(aes(x = Id, y = hours, fill = hour_type)) +
geom_col(position = "fill") +
coord_flip()

因为它看起来像这样:

  1. Id只是表示一个人,所以它不是数字。我希望条形之间的垂直间隙相同。

  2. 整体尺寸应该比这个大。(尤其是横向)

我应该如何更改此图表以使其更具可读性?

使用width =参数。这是一个例子:

mtcars %>%
  ggplot(aes(x = cyl, y = mpg, fill = am)) +
  geom_col(position = "fill", width = 0.05) +
  coord_flip()

geom_col 中更改 width

mtcars %>%
  ggplot(aes(x = cyl, y = mpg, fill = am)) +
  geom_col(position = "fill", width = 1.5) +
  coord_flip()

举例说明如何将 Id 列作为某些模拟 ID 的一个因素:

library(tidyverse)

act_df <- tibble(
  Id = sample (10000:99999, 20),
  a = sample(1:10, 20, replace = TRUE),
  b = sample(1:10, 20, replace = TRUE),
  c = sample(1:10, 20, replace = TRUE),
  d = sample(1:10, 20, replace = TRUE)
) %>% 
  pivot_longer(-Id, names_to = "hour_type", values_to = "hours")

act_df %>%
  mutate(Id = as_factor(Id)) %>% 
  ggplot(aes(y = Id, x = hours, fill = hour_type)) +
  geom_col(position = "fill")

使它成为一个因子,而不是一个整数,告诉 R 'ignore' 每个 ID 之间的距离(即停止将其视为连续变量)并并排标记每个 ID。

为了将来参考 - 在这个问题和你的其他相关问题中 - 使用 dput 提供一些样本数据以确保我们回答正确的问题会很有帮助。模拟数据(正如我上面所做的那样)是一种在不使用 sensitive/restricted 数据的情况下重现问题的方法。

reprex package (v2.0.1)

于 2022-04-28 创建