Конвертировать линейные участки в барплот - PullRequest
0 голосов
/ 31 марта 2011

Я сгенерировал три линейных графика, но данные на самом деле не являются непрерывными, поэтому я бы хотел сгенерировать эквивалентные графики, но мои знания по R крайне отсутствуют.

У меня есть следующие данные.

> dat
     classifier depth   average
1         bayes     0 3.5639098
2         bayes     1 6.0000000
3         bayes     2 3.0253165
4         bayes     3 5.2250000
5         bayes     4 1.7931034
6         bayes     5 2.6800000
7         bayes     6 3.6551724
8      adaboost     0 9.2857143
9      adaboost     1 0.9733333
10     adaboost     2 0.4050633
11     adaboost     3 0.4750000
12     adaboost     4 0.3448276
13     adaboost     5 0.6000000
14     adaboost     6 0.4137931
15 randomforest     0 7.0375940
16 randomforest     1 0.8000000
17 randomforest     2 0.7341772
18 randomforest     3 1.2750000
19 randomforest     4 0.3103448
20 randomforest     5 0.3600000
21 randomforest     6 0.3448276

Я использую следующий код для создания графика.

dat <- read.table('depth_errors.data', sep=',',header=T)
plot(0,0,xlim=c(0,6),ylim=c(0,10),xlab='depth',
     ylab='average misclassifications',type='n')

# Change the stroke
lines(dat[dat$classifier=='bayes',][,-1])
lines(dat[dat$classifier=='adaboost',][,-1],lty='dashed')
lines(dat[dat$classifier=='randomforest',][,-1],lty='dotted')

legend('topright', c('Naive Bayes', 'AdaBoost', 'Random Forest'), 
       lty=c('solid','dashed','dotted'))

Это вывод (нажмите, чтобы увеличить).

average misclassifications

Поскольку все мои другие графики были сгенерированы с использованием прямой R, с точки зрения внешнего вида я бы предпочел решение, которое не использует библиотеки, такие как ggplot, хотя я приму любой совет, который смогу получить .

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Хорошо, если вы решите использовать пакет ggplot2:

Этот код

library(ggplot2)
dat$depth <- factor(dat$depth)

p <- ggplot(dat, aes(x=depth, y=average, fill=classifier)) + geom_bar()
print(p)

Будет производить:

enter image description here

и этот код:

p <- ggplot(dat, aes(x=depth, y=average, fill=classifier)) + geom_bar(stat="identity", position="dodge")
print(p)

будет производить это:

enter image description here

0 голосов
/ 31 марта 2011

Благодаря @ k_jacko , кроме меток на оси X, это то, что я хотел.

mat <- matrix(dat$average, nrow=3, byrow=T)

barplot(
  mat,
  ylim=c(0,10),
  xlab='depth',
  names.arg=levels(factor(dat$depth)),
  ylab='average misclassifications',
  beside=TRUE,
  legend.text=c('Naive Bayes', 'AdaBoost', 'Random Forest')
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...