Mam następujący zestaw danych:
Year Generated Rejected
1 2012 133118208 7256986
2 2013 289487598 49652610
3 2014 192232775 31765480
4 2015 40434968 2513930
Próbuję wygenerować zgrupowany wykres słupkowy, który będzie miał Year
na osi X i skali liczbowej na osi Y, aby pokazać wygenerowane liczby V odrzucone w roku.
Jestem zdezorientowany, do czego mam ustawić oś y? Nie próbowałem używać spread()
jeszcze funkcjonować, ponieważ mam nadzieję, że może być łatwiejszy sposób
Odpowiedzi:
2 dla odpowiedzi № 1Najpierw musisz rozmieścić dane w odpowiednim formacie do wykreślania:
library(reshape2)
df1 <- melt(df, id = "Year")
Lub możesz użyć tidyr
pakiet:
library(tidyr)
df1 <- gather(df, variable, value, -Year)
Które mogą być łatwiejsze do zrozumienia, jeśli nie jesteś zaznajomiony z melt()
Zasadniczo mówi: "Zbierz wszystkie zmienne w df
z wyjątkiem Year
, wywołanie nowej kolumny klucza variable
i nowa kolumna wartości value
"
library(ggplot2)
ggplot(df1, aes(Year, value)) +
geom_bar(aes(fill = variable), position = "dodge", stat = "identity")
Jeśli wolisz formatować liczby za pomocą przecinków oddzielających tysiące:
library(ggplot2)
library(scales)
ggplot(df1, aes(Year, value)) +
geom_bar(aes(fill = variable), position = "dodge", stat = "identity") +
scale_y_continuous(name = "Values", labels = comma)