2014-01-16 5 views
0

У меня есть следующие данные в R.Group бар участок в R

> dat 
      algo taxi.d taxi.s hanoi.d. hanoi.s  ep 
1  plain VI 7.81 9.67 32.92 38.12 140.33 
2  model VI 12.00 46.67 53.17 356.68 229.89 
3 our algorithm 6.66 6.86 11.71 21.96 213.27 

Я сделал график этого в Excel, теперь я хочу что-то подобное в R. Обратите внимание, что вертикальная шкала логарифмическая, с полномочиями 2.

graph of data in Excel

Что R команды не нужно использовать, чтобы это?

К сожалению, если это очень простой вопрос, я полный новичок Р.

+0

Проверьте пакет 'ggplot2'. http://docs.ggplot2.org/current/ – rrs

+1

Также вы уверены, что действительно хотите использовать логарифмическую шкалу по оси y? Сложно сравнивать эти модели. И что не так с таблицей? Зачем вам это нужно? – rrs

ответ

1

В reshape2 и ggplot пакеты должны помочь выполнить что вы хотите:

dat = read.table(header=TRUE, text= 
"algo taxi.d taxi.s hanoi.d hanoi.s  ep 
1  'plain VI' 7.81 9.67 32.92 38.12 140.33 
2  'model VI' 12.00 46.67 53.17 356.68 229.89 
3 'our algorithm' 6.66 6.86 11.71 21.96 213.27") 

install.packages("reshape2") # only run the first time 
install.packages("ggplot2") # only run the first time 
library(reshape2) 
library(ggplot2) 

# convert the data into a more graph-friendly format 
data2 = melt(dat, id.vars='algo', value.name='performance', variable.name='benchmark') 

# graph data + bar chart + log scale 
ggplot(data2) + 
    geom_bar(aes(x = benchmark, y = performance, fill = algo), stat='identity', position='dodge') + 
    scale_y_log10() 
1

Надежда этот код поможет вам с вашим участком

dat <- matrix(c(
       c(0.25,0.25,0.25,0.25), 
       c(0.05,0,0.95,0), 
       c(0.4,0.1,0.1,0.4)), 
       nrow=4,ncol=3,byrow=FALSE, 
       dimnames=list(c("A","C","G","T"), 
           c("E","S","I")) 
       ) 

    barplot(dat,border=FALSE,beside=TRUE, 
      col=rainbow(4),ylim=c(0,1), 
      legend=rownames(dat),main="Plot name", 
      xlab="State",ylab="observation") 
    grid() 
    box() 
Смежные вопросы