построение количественной переменной по списку строк в R

У меня есть следующие данные, которые я хотел бы построить:

> x=c("X11", "X13", "X16", "X17")
> y=c(0.8, .9, .87, .84)
> foo=data.frame(x, y)
> foo
    x    y
1 X11 0.80
2 X13 0.90
3 X16 0.87
4 X17 0.84

Я хотел бы получить график, где по оси x у меня есть метки в столбце x, а по оси y у меня есть значения в столбце y. Однако я получаю следующее:

плохой сюжет

который в основном представляет собой блок-график, в котором у меня есть только одно наблюдение для категории. Это не годится — во-первых, я не могу изменить графические символы, потому что на самом деле это не символы, а вырожденные прямоугольники. Если я изменю свою структуру данных и перейду к именованным векторам, т.е.

 > names(y)=x
 > y
  X11  X13  X16  X17 
  0.80 0.90 0.87 0.84 
 > plot(y)

я понимаю это

еще один плохой сюжет

где теперь я могу изменять символы графика, линии, цвета и т. д., но я не могу получить имена меток на оси x. Ааааа!! В matlab или python все намного проще, почему в R должно быть так тяжело? Заранее спасибо за вашу помощь!


person DeltaIV    schedule 12.10.2015    source источник


Ответы (3)


Постройте без оси x и добавьте ее позже:

x=c("X11", "X13", "X16", "X17")
y=c(0.8, .9, .87, .84)
names(y)=x

plot(y, xaxt="n")
axis(1, at=1:4, labels = names(y))

введите здесь описание изображения

person Martin Schmelzer    schedule 12.10.2015
comment
Все ответы были хорошими, а остальные были однострочными, что в некотором отношении даже лучше. Но я выбираю этот, потому что хорошо знать, что что-то подобное выполнимо с базовой графикой. Спасибо! - person DeltaIV; 12.10.2015

Или с ggplot2:

ggplot(foo, aes(x, y)) + geom_point()

введите здесь описание изображения

person hrbrmstr    schedule 12.10.2015

Используйте qplot (установите пакет ggplot2 перед его использованием.)

qplot(foo$x,foo$y,data=foo)

person Arpit Sisodia    schedule 12.10.2015