【问题标题】:Plot based on group基于组的绘图
【发布时间】:2020-09-19 21:45:24
【问题描述】:

我的数据集共有 500 行:250 流行音乐,250 重金属。我怎样才能在 R 中制作这个图?

我的实际数据集并没有像我给出的示例那样分开。我应该把它分开吗?

到目前为止我做了什么

ggplot(data = playlist, aes(x = genre, y = danceability)) +
  geom_jitter(aes(col = genre))

【问题讨论】:

  • 您可以创建一个 ID 列以在 x 轴上使用而不是流派,然后使用 geom_point。之后,您可以根据需要隐藏图中的 ID 标签。

标签: r plot scatter-plot


【解决方案1】:

请参阅this post 了解如何创建一个简单的自包含示例。

鉴于您提供给我们的屏幕截图,我不知道您如何生成您所追求的情节,因为您只有一个数字变量 - danceability。在您的示例中,散点图在 x 轴上需要两个 - Data

也就是说,一旦您获得了第二个数值变量,您几乎已经回答了自己的问题。像

ggplot(data = playlist, aes(x = Data, y = danceability)) +
  geom_jitter(aes(col = genre))

会给你你想要的。

【讨论】:

    【解决方案2】:

    您遇到的问题是您映射了x = genre。因此,genre 被转换为一个因子,然后绘制在12

    相反,您想要将数据绘制在x-axis 上的随机点上。一个简单的方法是像这样随机抽样1:nrow(playlist)

    ggplot(data = playlist, aes(x = sample(1:nrow(playlist),nrow(playlist)),
                                color = genre, y = danceability)) +
      geom_point(aes(col = genre)) + labs(x = "data")
    

    请注意,您不再需要 geom_jitter

    数据

    playlist <- structure(list(danceability = c(0.683, 0.768, 0.693, 0.765, 0.506, 
    0.809, 0.628, 0.556, 0.72, 0.706, 0.414, 0.448, 0.687, 0.747, 
    0.532, 0.483, 0.491, 0.224, 0.666, 0.416, 0.44, 0.362, 0.28, 
    0.42, 0.115, 0.35, 0.519, 0.538, 0.507, 0.261), genre = c("pop", 
    "pop", "pop", "pop", "pop", "pop", "pop", "pop", "pop", "pop", 
    "pop", "pop", "pop", "pop", "pop", "heavy-metal", "heavy-metal", 
    "heavy-metal", "heavy-metal", "heavy-metal", "heavy-metal", "heavy-metal", 
    "heavy-metal", "heavy-metal", "heavy-metal", "heavy-metal", "heavy-metal", 
    "heavy-metal", "heavy-metal", "heavy-metal")), row.names = c(NA, 
    -30L), class = "data.frame")
    

    注意:此数据由optical character recognition从您的屏幕截图中得出,如有错误请见谅。

    【讨论】:

    • 很高兴它有帮助。干杯!
    猜你喜欢
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多