使用R绘制多系列条形图/点图

时间:2016-02-02 00:15:07

标签: r plot plotly

所以我在创建这个数据集的点图/条形图时遇到了麻烦。我的数据集看起来像this。我想要一个看起来像this的输出。但是,geom_bar()到ggplot只会给我计数,并且不会从表中获取单个十进制值。我也尝试过使用Plotly,但它似乎并没有很好地适应多个玩家的情节。

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

非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

首先,一些可重复的示例数据(如果您在此处发布另一个问题,您应该在问题中再次使用,这会让其他人更容易帮助您):

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

给出了:

enter image description here

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

enter image description here