在R中创建一个拍摄图表时,我一直在使用Todd W. Schneider的BallR球场设计中的一些开源资料(https://github.com/toddwschneider/ballr/blob/master/plot_court.R)
以及关于如何在hexbins(How to replicate a scatterplot with a hexbin plot in R?)内创建百分比的另一个Stack Overflow帖子。
这两个来源对我都很有帮助。
当我运行以下代码行时,我会得到一个稳定的六角形图,其中显示了球场上不同位置的投篮命中率:
ggplot(shots_df, aes(x = location_y-25, y = location_x, z = made_flag)) +
stat_summary_hex(fun = mean, alpha = 0.8, bins = 30) +
scale_fill_gradientn(colors = my_colors(7), labels = percent_format(),
name = "Percent Made")
但是,当我加入BallR球场设计代码片段时,如下所示:
ggplot(shots_df, aes(x=location_y-25,y=location_x,z=made_flag)) +
stat_summary_hex(fun = mean, alpha = 0.8, bins = 30) +
scale_fill_gradientn(colors = my_colors(7), labels=percent_format(),
name="Percent Made") +
geom_path(data = court_points,
aes(x = x, y = y, group = desc, linetype = dash),
color = "#000004") +
scale_linetype_manual(values = c("solid", "longdash"), guide = FALSE) +
coord_fixed(ylim = c(0, 35), xlim = c(-25, 25)) +
theme_court(base_size = 22)
我收到错误:Error in eval(expr, envir, enclos) : object 'made_flag' not found
,即使made_flag
在数据框中是100%shots_df
,并且在原始迭代中工作。我迷失在如何解决这个问题上。
答案 0 :(得分:1)
我相信你的问题在于geom_path()层。试试这个tweek:
geom_path(data = court_points, aes(x = x, y = y, z = NULL, group = desc, linetype = dash))
因为您将z美学设置在顶部,即使您使用的是其他数据源,它仍然会继承geom_path()。您必须使用z = NULL手动覆盖它。