基于组的绘图

Plot based on group

我有总共 500 行的数据集:250 首流行音乐,250 首重金属。我如何在 R 中生成此图?

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

到目前为止我做了什么

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

请参阅 this post 关于创建简单的独立示例。

根据您提供给我们的屏幕截图,我看不出您如何制作您想要的图,因为您只有一个数字变量 - danceability。在您的示例中,散点图在 x 轴上需要两个 - Data

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

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

给你想要的。

您遇到的问题是您映射了 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根据您的截图导出,如有错误请见谅。