Создание диаграммы области в R из фрейма данных xtabs - PullRequest
1 голос
/ 17 апреля 2020

У меня есть фрейм данных, который я создал с помощью xtabs.

Моя цель - создать граф области / графическую диаграмму с использованием этого фрейма данных, я просто не совсем уверен, как объявить оси.

vg <- read.csv("vgdata.csv")

df <- data.frame(vg)

graph <- xtabs(Sales ~ Year + Genre, df)
print(graph)

Вывод:

       Genre
Year    Action    RPG   Shooter
2005         3      2         2
2006         1      1         3
2007         3      3         4
2008         1      5         8
2009         4      7         7
2010         4      5         2

Обычно я бы использовал Sales, Genre, Year, et c в качестве переменных моего графика, но их не существует из-за того, как это было создан с использованием XTABS. У меня просто есть определенная переменная graph.

Мне бы хотелось, чтобы на оси x были годы, а на оси y - данные о продажах с обозначением жанра. Я надеюсь, что есть простой способ сделать это с форматом, который у меня уже есть. Причина, по которой я выбрал xtabs, заключается в том, что у меня было несколько игр под названием action, RPG и shooter для каждого года, и это был удобный способ суммировать их, чтобы получить фрейм данных об общих продажах за год.

1 Ответ

0 голосов
/ 18 апреля 2020

Вот несколько возможных способов построения результатов. В этом примере я использую данные из вашего последнего вопроса SO.

Предполагается, что вы используете xtabs, как описано:

result <- xtabs(Sales ~ Year + Genre, df)

Вы можете преобразовать в фрейм данных:

plot_data <- as.data.frame(result)
plot_data

  Year   Genre Freq
1 2005  Action    3
2 2006  Action    0
3 2007  Action    1
4 2005     RPG    0
5 2006     RPG    4
6 2007     RPG    2
7 2005 Shooter    3
8 2006 Shooter    0
9 2007 Shooter    3

Для графика площади вы можете задать Year цифру c вместо коэффициента для использования по оси x:

plot_data$Year <- as.numeric(as.character(plot_data$Year))

Затем построить с помощью geom_area:

library(ggplot2)

ggplot(plot_data, aes(x = Year, y = Freq, fill = Genre)) +
  geom_area() +
  scale_x_continuous(breaks = 2005:2007)

Участок

area plot with xtabs results

Данные

df <- structure(list(Name = 1:8, Year = c(2005L, 2005L, 2005L, 2006L, 
2006L, 2007L, 2007L, 2007L), Genre = c("Action", "Action", "Shooter", 
"RPG", "RPG", "Action", "Shooter", "RPG"), Sales = c(1L, 2L, 
3L, 2L, 2L, 1L, 3L, 2L)), class = "data.frame", row.names = c(NA, 
-8L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...