Вопрос по plot, r – Как построить несколько линий в R

11

У меня есть данные, которые выглядят так:

#d  TRUE    FALSE   Cutoff
4   28198   0   0.1
4   28198   0   0.2
4   28198   0   0.3
4   28198   13  0.4
4   28251   611 0.5
4   28251   611 0.6
4   28251   611 0.7
4   28251   611 0.8
4   28251   611 0.9
4   28251   611 1
6   19630   0   0
6   19630   0   0.1
6   19630   0   0.2
6   19630   0   0.3
6   19630   0   0.4
6   19636   56  0.5
6   19636   56  0.6
6   19636   56  0.7
6   19636   56  0.8
6   19636   56  0.9
6   19636   56  1

Поэтому я хочу построить их на основе True (ось Y) и False (ось X).

Я хочу, чтобы это выглядело примерно. This is the way I want it to appear roughly

Какой правильный способ сделать это? Мой код ниже не работает

dat<-read.table("mydat.txt", header=F);
dis     <- c(4,6);
linecols <-c("red","blue");
plot(dat$V2 ~ dat$V3, data = dat,  xlim = c(0,611),ylim =c(0,28251), type="l")

for (i in 1:length(dis)){
datax <- subset(dat, dat$V1==dis[i], select = c(dat$V2,dat$V3))
lines(datax,lty=1,type="l",col=linecols[i]);
}

Ваш Ответ

2   ответа
7

и мне все равно нравится графика ggplot, я предлагаю этот путь. После прочтения ваших данных (обратите внимание, чтоTRUE а такжеFALSE не являются действительными именами, поэтому R добавил. к именам столбцов), должно работать следующее:

require(ggplot2)
ggplot(dat, aes(FALSE., TRUE., colour = as.factor(d), group = as.factor(d))) + 
  geom_line()

ggplot2 сайт полон хороших советов. Также обратите вниманиеэтот поисковый запрос на SO для многих других хороших советов по связанным темам.

enter image description here

И для справки, вот как я подхожу к вашей проблеме, изменяя ваш исходный код:

colnames(dat)[2:3] <- c("T", "F")

dis <- unique(dat$d)

plot(NA, xlim = c(0, max(dat$F)), ylim = c(0, max(dat$T)))
for (i in seq_along(dis)){
  subdat <- subset(dat, d == dis[i])
  with(subdat, lines(F,T, col = linecols[i]))
}
legend("bottomright", legend=dis, fill=linecols)

enter image description here

Благодарю. После прочтения данных. Это дало мне эту ошибку: Ошибка в eval (expr, envir, enclos): object 'a FALSE. & Apos; не найдено. neversaint
@neversaint - я думаю, что у R возникают проблемы, поскольку TRUE и FALSE - зарезервированные слова в R. Измените имена столбцов на что-то вроде T и F, и все должно быть в порядке. Я не должен был даже пытаться соединить пример с этими именами ... это просто приведет к неприятностям для вас.colnames() это функция, которую вы выполняете после.
6

dat в этом примере:

plot(1:max(dat$false), xlim = c(0,611),ylim =c(19000,28251), type="n")

apply(
rbind(unique(dat$d),1:2),
#the 1:2 here are your chosen colours
2,
function(x) lines(dat$false[dat$d==x[1]],dat$true[dat$d==x[1]],col=x[2])
)

Результат:

enter image description here

редактировать - хотя использование строчных букв true / false для имен переменных допускается, это, вероятно, все еще не самая лучшая практика кодирования.

Похожие вопросы