R语言 如何创建一个ggplot条形图,其中y为多列数据?

wgeznvg7  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(195)

我的数据集如下所示:

下面是一个数据样本表:
| 城市|平均客户端使用情况|平均客户端估计值|预计流量|
| - ------|- ------|- ------|- ------|
| 亚特兰大|二千六百九十五点六八|三千五百五十五点六二|二千八百一十二点八九|
| 波士顿|五百五十九点四八|小行星1080.49|五百八十三点八一|
| 芝加哥|小行星3314.44|小行星5728|小行星3458.56|
我希望ggplot使用City作为X轴,并且x轴上的每个点都有三个条形,一个表示AverageClientUsage,一个表示AverageClientEst,一个表示EstimatedTraffic。我该如何进行操作?最后,我希望ggplot看起来像这样:

oknwwptz

oknwwptz1#

首先,您需要pivot_longer()您的 Dataframe :

library(dplyr)
df_long <- df %>% pivot_longer(!City, names_to = "Type", values_to = "Count")

然后,您可以在geom_col()中创建由Type和using position = "dodge"填充的条形

library(ggplot)
ggplot(df_long, aes(x = City, y = Count, fill = Type)) + # specify x and y axis, specify fill
         geom_col(position = position_dodge(0.7), width = 0.6, color = "black") + # position.dodge sets the bars side by side
  theme_minimal() + # add a ggplot theme
  theme(legend.position = "bottom", # move legend to bottom
        legend.title = element_blank(), # remove legend title
        axis.text.x = element_text(angle = 45, vjust = 0.5, color = "gray33"), # rotate x axis text by 45 degrees, center again, change color
        axis.text.y = element_text(color = "gray33"), # change y axis text coor
        axis.title = element_blank(), # remove axis titles
        panel.grid.major.x = element_blank()) + # remove vertical grid lines
  scale_fill_manual(values = c("blue", "darkorange2", "gray")) # adjust the bar colors

数据

df <- structure(list(City = c("Atlanta", "Boston", "Chicago"), AverageClientUsage = c(2695.68, 
      559.48, 3314.44), AverageClientEst = c(3555.62, 1080.49, 5728
      ), EstimatedTraffic = c(2812.89, 583.81, 3458.56)), class = c("tbl_df", 
      "tbl", "data.frame"), row.names = c(NA, -3L))

相关问题