如何绘制同一 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
应该创建您想要的情节。
我有三个向量和一个犯罪列表。每个犯罪代表一行。在每一行中,每个矢量标识与上一年相比每种类型的事件数量的百分比变化。
下面是可重现的例子。不幸的是,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
应该创建您想要的情节。