2015-07-29 1 views
1

У меня эта проблема, я до сих пор не понял, как ее решить. Я хочу построить все значения MW1, MW2 и MW3 в функции «DHT + Procymidone». Как я могу построить все эти значения в графике, чтобы получить 3 разных кривых (в разных цветах и ​​разных числах, таких как кривая 1, 2, ...)? И я хочу, чтобы метки Х-значений ("DHT + процимидон"), чтобы быть как -10, -9, ..., -4 вместо 1,00E-10, ...R: Как график таблицы Excel (матрица) с R

DHT + Procymidone MW 1    MW 2    MW 3 
1,00E-10   114,259526780335 111,022461066274 213,212408408682 
1,00E-09   115,024187788314 111,083316791613 114,529425136628 
1,00E-08   110,517449986348 107,867941606743 125,10230718665 
1,00E-07   100,961311263444 98,4219995773135 116,045168653416 
1,00E-06   71,2383604211297 73,539659636842  50,3213799775309 
1,00E-05   20,3553333652104 36,1345771905088 15,42260866106 
1,00E-04   4,06189509055904 18,1246447874679 10,1988107887318 

ответ

0

Я сократил свой кадр данных по причинам удобства, так вот пример:

mydat <- data.frame(DHT_Procymidone = c(-10, -9, -8, -7, -6, -5, -4), 
        MW1 = c(114, 115, 110, 100, 72, 20, 4), 
        MW2 = c(111, 111, 107, 98, 73, 36, 18), 
        MW3 = c(213, 114, 123, 116, 50, 15, 10)) 

library(tidyr) 
library(ggplot2) 
mydf <- gather(mydat, "grp", "MW", 2:4) 

ggplot(mydf, aes(x = DHT_Procymidone, y = MW, colour = grp)) + geom_line() 

, который дает следующий сюжет:

enter image description here

чтобы использовать ggplot, ваши данные должны быть в длинном формате. gather делает это для вас, добавляя столбцы MW1-MW3 в один столбец, в то время как имена столбцов добавляются как новые значения столбцов в столбце grp. Этот групповой столбец позволяет идентифицировать разные группы, то есть разные цветные линии на графике.

В зависимости от типа DHT + Procymidone, вы можете, например. используйте format(..., scientific = FALSE) для преобразования в числовое значение, однако это приведет к -0.0000000001 (а не -10).

Однако, если этот столбец данных является векторный характер (вы можете сподвигнуть с as.character), это может работать:

a <- "1,00E-10" 
sub("1,00E", "", a, fixed = TRUE) 

> [1] "-10" 
0

В качестве альтернативного ответа на @ Даниила, который не опирается на ggplot (спасибо Daniel для обеспечения воспроизводимых данных).

mydat <- data.frame(DHT_Procymidone = c(-10, -9, -8, -7, -6, -5, -4), 
        MW1 = c(114, 115, 110, 100, 72, 20, 4), 
        MW2 = c(111, 111, 107, 98, 73, 36, 18), 
        MW3 = c(213, 114, 123, 116, 50, 15, 10)) 

plot(mydat[,2] ~ mydat[,1], typ = "l", ylim = c(0,220), xlim = c(-10,-2), xlab = "DHT Procymidone", ylab = "MW") 
lines(mydat[,3] ~ mydat[,1], col = "blue") 
lines(mydat[,4] ~ mydat[,1], col = "red") 
legend(x = -4, y = 200, legend = c("MW1","MW2","MW3"), lty = 1, bty = "n", col = c("black","blue","red")) 

Чтобы изменить метки оси увидеть текст в xlab и ylab. Для изменения предельных значений осей см. xlim и ylim.

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