Как построить одну переменную в ggplot?

Я ищу, но все еще не могу найти ответ на довольно простой вопрос - как мы можем создать простой точечный график одной переменной с ggplot2 в R?

с помощью команды plot это очень просто:

plot(iris$Sepal.Length, type='p')

Но когда я пытаюсь передать одну переменную в qplot и указывая geom = "point", я получаю сообщение об ошибке "Ошибка в UseMethod (" scale_dimension ")".

Simple one-variable plot

Как мы можем сделать такой сюжет, как с ggplot2?

Ответ 1

Вы можете вручную создать индексный вектор с seq_along.

library(ggplot2)

qplot(seq_along(iris$Sepal.Length), iris$Sepal.Length)

enter image description here

Ответ 2

На самом деле, вы не рисуете одну переменную, а две. X-variable - это порядок ваших данных. Ответ на то, что вы хотите на основе вашего примера:

library(ggplot2)
ggplot(iris, aes(y = Sepal.Length, x = seq(1, length(iris$Sepal.Length)))) + geom_point()

Ответ на ваш вопрос будет ближе к этому:

ggplot(iris, aes(x = Sepal.Length)) + geom_dotplot()

Ответ 3

require(ggplot2)

x= seq(1,length(iris$Sepal.Length))
Sepal.Length= iris$Sepal.Length

data <- data.frame(x,Sepal.Length)

ggplot(data) + geom_point(aes(x=x,y=Sepal.Length))

enter image description here

Ответ 4

Альтернатива использованию qplot и без указания data параметров:

ggplot(mapping=aes(x=seq_along(iris$Sepal.Length), y=iris$Sepal.Length)) +
    geom_point()

или:

ggplot() +
    geom_point(aes(x=seq_along(iris$Sepal.Length), y=iris$Sepal.Length))

Ответ 5

library(ggplot2)
qplot(1:nrow(iris), Sepal.Length, data = iris, xlab = "Index")

или

ggplot(data = iris, aes(x = 1:nrow(iris), y = Sepal.Length)) +
    geom_point() +
    labs(x = "Index")