Если вы не являетесь экспертом в ggplot2 и вам нужно сделать что-то довольно сложное, вы должны никогда , никогда , никогда использовать векторы против сопоставленных столбцов как aes()
параметров, а также на самом деле следует также избегать $
выбранных столбцов в aes()
. В этом ваша проблема (похоже, вы пытаетесь использовать ggplot2 таким же образом, как вы используете базовую графику, и это путь, чреватый опасностями).
library(ggplot2)
data.frame(
t = c(-1, 2, -3, 4, -5, 6),
order = 1:6
) -> d
s <- d[4:6,]
Теперь, сделайте правильную идиому ggplot2 и добавьте столбец с эстетикой y
, которую вы хотите использовать. Я выбрал имя idx
несколько случайно, так как мы не знаем, что вы хотите сделать.
s$idx <- 1:nrow(s)
Теперь / снова выполните правильную идиому ggplot2 и передайте фрейм данных в ggplot()
и сопоставьте столбцы эстетике без $
.
ggplot(s) +
geom_point(
aes(t, idx), size = 3, color = "black"
) -> p
Проблема в том, что ggplot2 ничего не делает с параметрами, пока диаграмма не построена. Он лениво оценивает их, поэтому, когда вы пытаетесь построить его после , вы меняете s
, он поднимает "новый" s
.