我正在从NBA投篮数据集中生成气泡图。数据的最终形式是:
其中Group.1是群集的索引,ad.SHOT_MADE_FLAG是群集的字段目标百分比,coords.x1和x2是该群集中点的平均x和y坐标,x是数字该群集中的镜头(x和y点)。
我正在使用以下内容绘制数据:
courtImg.URL <- "https://thedatagame.files.wordpress.com/2016/03/nba_court.jpg"
court <- rasterGrob(readJPEG(getURLContent(courtImg.URL)),
width=unit(1,"npc"), height=unit(1,"npc"))
p6 <- ggplot(final, aes(x = final$coords.x1, y = final$coords.x2, size =
final$x,fill=final$ad.SHOT_MADE_FLAG)) +
geom_point(shape = 21) +
annotation_custom(court, -250, 250, -52, 418) +
scale_x_continuous() +
coord_fixed() +
scale_fill_gradientn(colours = c("Blue","Red")) +
theme(line = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
legend.title = element_blank(),
plot.title = element_text(size = 17, lineheight = 1.2, face = "bold")) +
ggtitle("Stephen Curry Shot Chart")
p6
这将输出以下图表
我想解决两个问题。首先,背景图像覆盖了大部分数据。其次,我想仅显示y轴上418点下方的图。我不想显示后场投篮,因为他们并不相关。仅供参考,当我删除annotation_custom()行时,它显示以下图:
因此,annotation_custom行的实现似乎是问题的一部分。任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
ggplot2
按照您指定的顺序绘制绘图图层。要将法院的图像移动到点下方,请将其放在绘图顺序中的第一位。另一个可能使你的情节变得更好的修复方法是让面板背景透明,这样你就可以看到图像顶部的点,我认为这是你想要的。
您可以使用limits
中的scale_y_continuous()
参数设置图表的结尾。
更新了绘图代码:
p6 <- ggplot(final, aes(x = final$coords.x1, y = final$coords.x2, size =
final$x,fill=final$ad.SHOT_MADE_FLAG)) +
annotation_custom(court, -250, 250, -52, 418) +
geom_point(shape = 21) +
scale_x_continuous() +
scale_y_continuous(limits=c(-52,418)) +
coord_fixed() +
scale_fill_gradientn(colours = c("Blue","Red")) +
theme(line = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
legend.title = element_blank(),
panel.background = element_rect(fill="transparent"),
plot.title = element_text(size = 17, lineheight = 1.2, face = "bold")) +
ggtitle("Stephen Curry Shot Chart")
p6