首页 > 解决方案 > 如何绘制同一 DataFrame 中 3 个向量的百分比变化?

问题描述

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

以下是可重现的示例。不幸的是, df 采用第一个值并在列中重复(这是我的第一个可重现的示例)。

crime_vec = c('\tSTRONGARM - NO WEAPON', '$500 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,但只能得到一列来绘制(偶尔)。

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

标签: rggplot2data-visualization

解决方案


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

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应该创建您想要的情节。


推荐阅读