【问题标题】:Creating Area Chart in R from xtabs Data Frame从 xtabs 数据框在 R 中创建面积图
【发布时间】:2020-04-16 21:07:20
【问题描述】:

我有一个使用 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 等作为我的图表的变量,但这些不存在,因为它是使用 xtabs 创建的。我只是将图形作为定义的变量。

我想在 x 轴上显示年份,在 y 轴上显示销售数据,类型为标签。我希望有一种简单的方法可以使用我已经拥有的格式来做到这一点。我选择 xtabs 的原因是因为我每年都有几款动作游戏、角色扮演游戏和射击游戏,这是一种将它们相加以获得每年总销售额的数据框的便捷方法。

【问题讨论】:

    标签: r dataframe graph charts


    【解决方案1】:

    您可以通过以下几种方法绘制结果。对于此示例,我使用的是您上一个 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 设为数字而不是 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)
    

    情节

    数据

    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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      相关资源
      最近更新 更多