2013-12-03 3 views
3

У меня есть вектор:вектор земля, как barplot

x<-c(1,1,1,1,2,3,5,1,1,1,2,4,9) 
y<-length(x) 

Я хотел бы построить это таким образом, что каждое значение строится отдельно вместо планировавших подсчетов.

Таким образом, в основном каждое значение должно быть представлено отдельно на графике, где длина оси x равна y, и каждое значение отображается на оси y.

Как это сделать, используя qplot?

для матрицы:

a<-matrix(NA, ncol=3, nrow=100) 

a[,1]<-1:100 
a[,2]<-rnorm(100) 
a[,3]<-rnorm(100) 

a<-melt(as.data.frame(a),id.vars="V1") 

ggplot (а, АЕС (seq_along (а), а)) + geom_bar (стат = "идентичность") + facet_wrap (V1)

+0

Это наиболее решительно ** не ** гистограмма. Это бар. –

ответ

8

С ggplot2 использования x как значения y и сделать последовательность вдоль значений x для оси x.

ggplot(data.frame(x),aes(seq_along(x),x))+geom_bar(stat="identity") 

enter image description here

Если у вас есть матрица a, и вы должны сделать сюжет для каждой строки затем расплавить его, а затем использовать variable для оси х и value для оси у

a<-melt(as.data.frame(a),id.vars=1) 

ggplot(a,aes(variable,value))+geom_bar(stat="identity")+facet_wrap(~V1) 

enter image description here

+0

это прекрасно, спасибо. и что, если у меня есть матрица, где я хотел бы построить каждую строку в отдельном сюжете. Могу ли я использовать facet_wrap? – user1723765

+0

Предположим, что у меня есть матрица a, a [, 1] = c (1,2,3,4,5,6); а [2] = runif (6); а [3] = runif (6). Я хотел бы сделать грань [, 1] и построить каждую строку отдельно. Как получить расплав() для получения правильного формата? melt (a, id.vars = 1: 1) не выполняет работу – user1723765

+0

Вы получили эту ошибку, используя код, который я ввел в ответ? (есть знак тильды перед V1 в facet_wrap) –

0

Простые решения:

barplot(x,xlim = c(0,15), ylim = c(0,10)) 

xlim и ylim масштабируются в зависимости от длины вектора

0

вы можете попробовать это тоже без создания dataframe явно:

ggplot() + geom_bar(aes(x=seq_along(x),y=x), stat='identity') + xlab('x') + ylab('y') 

enter image description here

Смежные вопросы