使用ggplot2在散点图中用线连接点
Connecting points with a line in scatterplot using ggplot2
我有一个散点图,它按类别将点分成不同的颜色。我希望这些类别之一有一条线连接点以突出显示该类别的数据。我无法弄清楚这一点...
Round <- read.csv("http://goo.gl/3c3vBU") # Data
qplot(factor(Round), Opp.Landed, data=floyd, color=Opponent, size=Opp.Percent.Landed, alpha = I(0.7)) +
labs(x="Round", y="Punches Landed", title="Opponent Punches Landed / Percentage", colour="Boxer", size="Connect Percentage") +
scale_linetype_manual(values=1:2, labels=c("Boxer", "Connect Percentage")) +
guides(colour = guide_legend(override.aes = list(size=5)))
ftheme
代码只是颜色和格式。有任何想法吗?我试过添加 geom_line(aes(linetype=floyd[Opponent="Manny Pacquiao"]), size=1)
但它出错了
Error in [.data.frame`(floyd, Opponent = "Manny Pacquiao") : unused argument (Opponent = "Manny Pacquiao")
编辑:我更新了上面的代码以排除 ftheme,因此它是可重现的。请查看三个类别的示例数据集。我只希望其中任何一个具有连接点:http://goo.gl/3c3vBU
如果无法根据您的数据样本 运行 您的代码,我无法给出量身定制的答案,但您可以使用 scale_color_manual
设置您想要的类别的颜色突出显示 "red" 并将所有其他设置为 NA
。例如,如果您要突出显示的类别是第二个类别,并且您总共有五个类别,则将此添加到您的情节代码中:
scale_colour_manual(values=c(NA, "red", rep(NA,3)))
如果您也有与颜色美学相关的点,那么您需要将这些点更改为填充美学(例如,fill=Opponent
)并使用您可以使用的填充点标记使用 shape
或 pch
手动设置。否则,您的点标记将与线条一起消失。标记编号 21 到 25 已填充(有关点标记的更多信息,请参阅 ?pch
)。
更新: 这是我使用您提供的数据进行的尝试。我不太确定您希望图例和其他细节看起来如何,所以请告诉我这是否可行。我已经切换到 ggplot
,因为我不知道 qplot
的来龙去脉。
ggplot(floyd, aes(factor(Round), Opp.Landed, color=Opponent,
fill=Opponent, group=Opponent, size=Opp.Percent.Landed),
alpha = 0.7, pch=21) +
geom_point(pch=21, colour=NA) +
geom_line() +
labs(x="Round", y="Punches Landed", title="Opponent Punches Landed / Percentage",
colour="Boxer", size="Connect Percentage") +
scale_linetype_manual(values=1:2, labels=c("Boxer", "Connect Percentage")) +
scale_colour_manual(values=c(hcl(15,100,65), NA, NA), guide="none") +
guides(fill = guide_legend(override.aes = list(size=5)))
尝试添加:
geom_line(data=subset(floyd,Opponent=="Manny Pacquiao"), aes(factor(Round), Opp.Landed, group=Opponent), size = 2)
一段非常简单的代码,它使您的数据的一个子集通过您的数据点给出了一条大小为 2 的漂亮线。
(因为你没有在数据集中提供曼尼帕奎奥,所以我使用了对手米格尔库托的图像)
我有一个散点图,它按类别将点分成不同的颜色。我希望这些类别之一有一条线连接点以突出显示该类别的数据。我无法弄清楚这一点...
Round <- read.csv("http://goo.gl/3c3vBU") # Data
qplot(factor(Round), Opp.Landed, data=floyd, color=Opponent, size=Opp.Percent.Landed, alpha = I(0.7)) +
labs(x="Round", y="Punches Landed", title="Opponent Punches Landed / Percentage", colour="Boxer", size="Connect Percentage") +
scale_linetype_manual(values=1:2, labels=c("Boxer", "Connect Percentage")) +
guides(colour = guide_legend(override.aes = list(size=5)))
ftheme
代码只是颜色和格式。有任何想法吗?我试过添加 geom_line(aes(linetype=floyd[Opponent="Manny Pacquiao"]), size=1)
但它出错了
Error in [.data.frame`(floyd, Opponent = "Manny Pacquiao") : unused argument (Opponent = "Manny Pacquiao")
编辑:我更新了上面的代码以排除 ftheme,因此它是可重现的。请查看三个类别的示例数据集。我只希望其中任何一个具有连接点:http://goo.gl/3c3vBU
如果无法根据您的数据样本 运行 您的代码,我无法给出量身定制的答案,但您可以使用 scale_color_manual
设置您想要的类别的颜色突出显示 "red" 并将所有其他设置为 NA
。例如,如果您要突出显示的类别是第二个类别,并且您总共有五个类别,则将此添加到您的情节代码中:
scale_colour_manual(values=c(NA, "red", rep(NA,3)))
如果您也有与颜色美学相关的点,那么您需要将这些点更改为填充美学(例如,fill=Opponent
)并使用您可以使用的填充点标记使用 shape
或 pch
手动设置。否则,您的点标记将与线条一起消失。标记编号 21 到 25 已填充(有关点标记的更多信息,请参阅 ?pch
)。
更新: 这是我使用您提供的数据进行的尝试。我不太确定您希望图例和其他细节看起来如何,所以请告诉我这是否可行。我已经切换到 ggplot
,因为我不知道 qplot
的来龙去脉。
ggplot(floyd, aes(factor(Round), Opp.Landed, color=Opponent,
fill=Opponent, group=Opponent, size=Opp.Percent.Landed),
alpha = 0.7, pch=21) +
geom_point(pch=21, colour=NA) +
geom_line() +
labs(x="Round", y="Punches Landed", title="Opponent Punches Landed / Percentage",
colour="Boxer", size="Connect Percentage") +
scale_linetype_manual(values=1:2, labels=c("Boxer", "Connect Percentage")) +
scale_colour_manual(values=c(hcl(15,100,65), NA, NA), guide="none") +
guides(fill = guide_legend(override.aes = list(size=5)))
尝试添加:
geom_line(data=subset(floyd,Opponent=="Manny Pacquiao"), aes(factor(Round), Opp.Landed, group=Opponent), size = 2)
一段非常简单的代码,它使您的数据的一个子集通过您的数据点给出了一条大小为 2 的漂亮线。
(因为你没有在数据集中提供曼尼帕奎奥,所以我使用了对手米格尔库托的图像)