使用ggplot2

时间:2015-05-27 01:24:07

标签: r 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

2 个答案:

答案 0 :(得分:4)

如果您无法在数据样本上运行代码,我无法提供量身定制的答案,但您可以使用scale_color_manual设置要突出显示的类别的颜色,例如“红色“并将所有其他人设置为NA。例如,如果要突出显示的类别是第二个类别,并且您总共有五个类别,则将其添加到您的绘图代码中:

scale_colour_manual(values=c(NA, "red", rep(NA,3)))

如果您的点数也与颜色美学相关联,那么您需要将点数更改为填充美学(例如,fill=Opponent)并使用可以手动设置的填充点标记使用shapepch。否则,您的点标记将随线条一起消失。标记号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))) 

enter image description here

答案 1 :(得分:1)

尝试添加:

 geom_line(data=subset(floyd,Opponent=="Manny Pacquiao"), aes(factor(Round), Opp.Landed, group=Opponent), size = 2)

enter image description here

非常简单的代码片段,它使您的数据子集通过您的数据点提供了一个很好的第2行。

(因为你没有在数据集中提供Manny Pacquiao,因此我使用了对手Miguel Cotto的图像)