在R中使用ggplot2时找不到对象

时间:2016-05-30 16:14:54

标签: r ggplot2

在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,并且在原始迭代中工作。我迷失在如何解决这个问题上。

1 个答案:

答案 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手动覆盖它。