'R studio Barplot

I have the following dataframe:

structure(list(share.beer = c(0.277, 0.1376, 0.1194, 0.0769, 
0.0539, 0.0361, 0.0361, 0.0351, 0.0313, 0.03, 0.0119, 0.0084, 
0.007, 0.0069), country = c("Brazil", "China, mainland", "United States", 
"Thailand", "Vietnam", "China, mainland", "China, mainland", 
"China, mainland", "China, mainland", "Argentina", "Indonesia", 
"China, mainland", "China, mainland", "India"), Beer = c("soyb", 
"maiz", "soyb", "cass", "cass", "whea", "rape", "soyb", "rice", 
"soyb", "cass", "cott", "swpo", "rape")), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -14L))

I want to create a barplot so that the beer type appears in the legend, the countries as y values while the share.beer are my values to be filled.

I have tried in various ways, including the following code, but I can't get the result I would like to. Here, for instance, I kept the variable "Beer""

df %>%
  pivot_longer(cols = -Country, values_to = "Count", names_to = "Type") %>%
  ggplot() +
  geom_col(aes(x = reorder(Country, -Count), y = Count, fill = Beer))

However, I get an error

Can't combine share beer and Beer .

Any help?



Solution 1:[1]

You actually don't need the pivot_longer to create a suitable dataframe. You can use the following code:

library(tidyverse)
df %>%
  ggplot() +
  geom_col(aes(x = reorder(country, -share.beer), y = share.beer, fill = Beer)) +
  xlab("Country") +
  ylab("Share beer") +
  coord_flip()

Output:

enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Quinten