R - 美学必须是长度 1 或与数据相同

R - Aesthetics must be either length 1 or the same as the data

我似乎无法解决这个错误,它说美学必须是长度 1 或与数据相同,在我的例子中是 368。
我从数据中创建了两个变量,它们都是 18 个值。这些是我的 x 和 y 值,其中 x 轴是年份,y 轴是那些年激进右翼候选人的投票份额。我的变量长度相同,那么为什么会出现此错误,我该如何更正此错误?

austria_year <- elect$year[26:43]

ggplot(data=elect, aes(x=austria_year, y=austria_rad_right)) +
  geom_line() +
  xlab("Year") +
  ylab("Radical Right Vote Share") +
  ggtitle("Austria Radical Right Support Over Time") + 
  theme_gray() +
  theme(panel.grid=element_blank())

如果您对任何内容进行子集化,则对所有内容进行子集化。

ggplot(data = elect[26:43,], aes(x = year, y = austria_rad_right)) +
  geom_line() +
  xlab("Year") +
  ylab("Radical Right Vote Share") +
  ggtitle("Austria Radical Right Support Over Time") + 
  theme_gray() +
  theme(panel.grid = element_blank())

您对 aes(x = austria_year, y = austria_rad_right) 代码所做的操作类似于 plot(21:23, 1:10)(失败)。好的,所以前几个点是 21,122,223,3,但是 ,4,5 和 beyond pair 有什么用?

图层特定的数据子集

有时需要在不同的图层中显示数据的不同部分。例如,来自所有数据的点和来自子集的线。为此,我们可以利用 data= 个单独层的参数。

ggplot(mtcars, aes(mpg, cyl)) +
  geom_point() +
  geom_path(data = ~ .[with(., ave(cyl, cyl, FUN = seq_along) < 2),],
            color = "red")

我正在使用 rlang 风格的 ~ 波形符函数,其中 . 被主 ggplot(.) 调用中提供的数据替换。为什么这有用?因为通常可以更改第一行中的数据而忘记在其余数据相关层中更新它;以这种方式,用于图层的数据子集是动态的。

如果您打算显示来自所有数据的图层,然后仅显示其中的一个子集用于另一图层,这将适用于您的情况。

也许是这样:

ggplot(data = elect, aes(x = year, y = austria_rad_right)) +
  geom_point(color = "gray") +
  geom_line(data = ~ .[26:43,]) +
  xlab("Year") +
  ylab("Radical Right Vote Share") +
  ggtitle("Austria Radical Right Support Over Time") + 
  theme_gray() +
  theme(panel.grid = element_blank())

无可否认,我更喜欢一种更好的子集数据方法,也许像

  geom_line(data = ~ subset(., country == "Austria")) +