首页 > 解决方案 > 酒吧和餐饮店的边界,ggplot

问题描述

我尝试在 ggplot 中绘制条形图,在 x 个国家/地区,每个物种的动物数量为 y。我做到了这一点,但是当我尝试勾勒出每个物种和条形图时,我得到了图表中每个值之间的边界。

我还尝试使用 reprex 包创建一个看起来更漂亮的问题,包括我的图表,但我的声誉太低,显然无法发布这些图片。

所以我只尝试代码:

创建数据框
library(tidyverse)

country <- c( "AA", "AA", "BB", "BB", "CC", "CC", "DD", "DD", "EE", "EE")
sheep <-c(130, 146, 12, 15, 19, 0, 44, 57, 99, 123)
cattle <- c(11, 34, 221, 0, 91, 49, 33, 28, 19, 10)
pigs <- c(55, 0, 34, 48, 54, 0, 33, 59, 112, 23)

animals_wide <- data_frame(country, sheep, pigs, cattle)
“重塑”桌子从宽到长(tidyr::gather)
animals_long <- animals_wide %>%
  gather(key = species, value = numbers, -country)

glimpse(animals_long)
由ggplot绘制
ggplot(animals_long, aes(country, numbers, fill = species)) +
  geom_bar(stat = "identity") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  scale_fill_manual(values=c("gray", "black", "white"))

在此处输入图像描述

尝试通过添加 geom_bar(..., color = "black) 为 bar 中的“物种”添加黑色轮廓
ggplot(animals_long, aes(country, numbers, fill = species)) +
  geom_bar(stat = "identity", color = "black") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  scale_fill_manual(values=c("gray", "black", "white"))

在此处输入图像描述 所以,我想要实现的是每个物种都有黑色边框的条形图。提前致谢!

标签: rggplot2

解决方案


该国家/地区在您的数据框中出现两次,因此每个物种有两个值。因此,您必须将这两个值结合起来才能在绘图中获得一个黑色边框。

这很容易实现:

 animals_long <- animals_long %>% 
   group_by(country, species) %>% 
   summarise(numbers = sum(numbers))

这导致

在此处输入图像描述


推荐阅读