所以我在创建这个数据集的点图/条形图时遇到了麻烦。我的数据集看起来像this。我想要一个看起来像this的输出。但是,geom_bar()到ggplot只会给我计数,并且不会从表中获取单个十进制值。我也尝试过使用Plotly,但它似乎并没有很好地适应多个玩家的情节。
我已经设置了一个包含200多个变量的更大数据框。我试图制作可以在该数据框中搜索特定玩家的东西,然后从中创建一个情节。因此,我理想地寻找能够轻松处理5-10个不同系列的东西。
非常感谢任何帮助。
谢谢!
答案 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")
给出了:
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")