изчертаване на количествена променлива спрямо списък от низове в 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