使用 R 绘制多系列 Bar/Dot 图

Graphing a Multi-Series Bar/Dot Plot with R

所以我在创建我拥有的这个数据集的点 plot/bar 图时遇到了问题。我的数据集看起来像 this. I want an output that looks like this。但是,通过 ggplot 的 geom_bar() 只会给我计数,不会从 table 中获取单独的小数值。我也尝试过使用 Plotly,但它似乎不能很好地扩展到多个玩家的情节。

我已经设置了一个包含 200 多个变量的更大的数据框。我正在尝试做一些可以在该数据框中搜索特定玩家的东西,然后从中创建一个情节。因此,我理想地寻找可以轻松处理 5-10 个不同系列的东西。

如有任何帮助,我们将不胜感激。

谢谢!

这非常简单,关键是将您的数据从当前的宽格式转换为更适合在 R 中绘图的长格式。并使用 geom_point 而不是 geom_bar

首先,一些可重现的示例数据(如果您 post 在这里提出另一个问题,您应该在您的问题中再次使用这些数据,让其他人更容易帮助您):

library(ggplot2)
library(reshape2)

dataset <- data.frame(
  PlayerName = letters[1:6], 
  IsolationPossG = runif(6), 
  HandoffPossG = runif(6), 
  OffScreenPossG = runif(6)
)

这是您当前的宽格式数据:

 dataset
  PlayerName IsolationPossG HandoffPossG OffScreenPossG
1          a     0.78184751  0.939183520     0.74461784
2          b     0.06557433  0.745699149     0.96540299
3          c     0.21105745  0.753534811     0.02977973
4          d     0.41271918  0.555475622     0.18317886
5          e     0.38153149  0.246292074     0.74862310
6          f     0.89946318  0.008412111     0.53195933

现在我们转换成长格式:

molten <- melt(
  dataset, 
  id.vars = "PlayerName", 
  measure.vars = c("IsolationPossG", "HandoffPossG", "OffScreenPossG")
)

这是长格式,对于在 R 中绘图更有用:

head(molten)
  PlayerName       variable      value
1          a IsolationPossG 0.78184751
2          b IsolationPossG 0.06557433
3          c IsolationPossG 0.21105745
4          d IsolationPossG 0.41271918
5          e IsolationPossG 0.38153149
6          f IsolationPossG 0.89946318

绘制方法如下:

ggplot(molten, aes(x = variable, y = value, colour = PlayerName)) +
  geom_point(size = 4) +
  theme_bw() +
  theme(legend.position="bottom",legend.direction="horizontal")

给出:

h/t how to have multple labels in ggplot2 for bubble plot

如果您希望数据点的形状因名称而异,如您的示例图片所示(但在两个情节的美学上让玩家名称变量似乎太过分了):

ggplot(molten, aes(x = variable, y = value, shape = PlayerName, colour = PlayerName)) +
  geom_point(size = 4) +
  theme_bw() +
  theme(legend.position="bottom",legend.direction="horizontal")