我现在正在做一个仇恨犯罪的案例研究。在我的绘图中,我使用一个邮政编码作为y轴,并使用geom-col在x轴上绘制了有多少犯罪以及哪个群体成为目标。问题是我的y轴将邮政编码相加在一起,而不是计算邮政编码出现的次数。下面是我的数据集:
structure(list(ID = 1:5, CRIME_TYPE = c("VANDALISM", "ASSAULT", "VANDALISM", "ASSAULT",
"OTHER"), BIAS_MOTIVATION_GROUP = c("ANTI-BLACK ",
"ANTI-BLACK ", "ANTI-FEMALE HOMOSEXUAL (LESBIAN) ",
"ANTI-MENTAL DISABILITY ", "ANTI-JEWISH "),
ZIP_CODE = c(40291L, 40219L, 40243L, 40212L, 40222L
)), row.names = c(NA, 5L), class = "data.frame")下面是我的代码:
library(ggplot2)
df <- read.csv(file = "LMPD_OP_BIAS.csv", header = T)
library(tidyverse)
hate_crime <- df %>%
filter(ZIP_CODE == "40245")
hate_crime_plot <- hate_crime %>%
ggplot(., aes(x = BIAS_MOTIVATION_GROUP, y = ZIP_CODE, fill =
BIAS_MOTIVATION_GROUP)) +
geom_col() + labs(x = "BIAS_MOTIVATION_GROUP", fill = "BIAS_MOTIVATION_GROUP") +
theme_minimal() +
theme(axis.text.x=element_text (angle =45, hjust =1))
print(hate_crime_plot)
hate_crime_ploter <- hate_crime %>%
ggplot(., aes(x = UOR_DESC, y = ZIP_CODE, fill =
UOR_DESC)) +
geom_col() + labs(x = "UOR_DESC", fill = "UOR_DESC") +
theme_minimal() +
theme(axis.text.x=element_text (angle =45, hjust =1))
print(hate_crime_ploter)有关完整数据,请访问此处:visit site to download data set
发布于 2021-06-08 05:59:01
好的,我想你有几个问题。在您的代码中发生的事情是,您要求ggplot在x轴上绘制一个分类变量(BIAS_MOTIVATION_GROUP和UOR_DESC),在y轴上绘制一个连续变量(ZIP_CODE)的条形图。由于每个x-y组合有多行,ggplot将x值加在一起,这是您在条形图中所期望的。长话短说,我想知道您实际上想要的是否是直方图。您的数据集(hate_crime)只有一个值ZIP_CODE,所以我不确定在y轴上绘制Zip值应该是什么。直方图如下所示:
hate_crime %>%
ggplot(., aes(x = UOR_DESC, , fill = UOR_DESC)) +
geom_histogram(stat = "count") +
labs(x = "UOR_DESC", fill = "UOR_DESC") +
theme_minimal() +
theme(axis.text.x=element_text (angle =45, hjust =1))

相反,如果您试图可视化每个邮政编码在每个类别中出现的频率,则必须以不同的方式处理问题。也许你正在寻找这样的东西?
df %>%
ggplot(aes(x = UOR_DESC, fill = factor(ZIP_CODE))) +
geom_histogram(stat = "count") +
theme(axis.text.x=element_text (angle =45, hjust =1))

https://stackoverflow.com/questions/67875615
复制相似问题