如何绘制同一 DataFrame 中 3 个向量的百分比变化?

How Can I Plot Percentage Change for 3 Vectors in Same DataFrame?

我有三个向量和一个犯罪列表。每个犯罪代表一行。在每一行中,每个矢量标识与上一年相比每种类型的事件数量的百分比变化。

下面是可重现的例子。不幸的是,df 取第一个值并在列中重复(这是我的第一个可重现的例子)。

crime_vec = c('\tSTRONGARM - NO WEAPON', '0 AND UNDER', 'ABUSE/NEGLECT: CARE FACILITY', 'AGG CRIM')
    change15to16vec = as.double(825, -1.56, -66.67, -19.13)
    change16to17vec = as.double(8.11, .96, 50, 4.84)
    change17to18vec = as.double(-57.50, 1.29, 83.33, 28.72)
    df = data.frame(crime_vec, change15to16vec, change16to17vec, change17to18vec)
    df

我需要一个图表,该图表将采用正确的数据框,沿 y 轴显示犯罪情况,并在闪避条中的 x 轴上显示所有 3 个百分比变化向量。我见过的例子只绘制了两个向量。我试过 plot()、geom_bar、geom_col,但只能得到一列来绘制图表(偶尔)。

任何补救建议都会有所帮助。

不确定这是否是您要查找的内容:

library(tidyr)
library(ggplot2)

df %>% 
  pivot_longer(-crime_vec) %>% 
  ggplot(aes(x = value, y = crime_vec, fill = as.factor(name))) + 
  geom_bar(stat = "identity", position = "dodge") +
  theme_minimal() +
  xlab("Percentage Change") + 
  ylab("Crime") + 
  labs(fill = "Change from")

为了使用 ggplot2,有必要将您的数据转换为长格式。 geom_bar 应该创建您想要的情节。