Построение data.frame в R - PullRequest
3 голосов
/ 05 мая 2011

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

         V1          V2         V3          V4         
          1       Mazda     Toyota     Peugeot
   Car1.txt 0,507778837 0,19834711 0,146892655
   Car2.txt 0,908717802 0,64214047 0,396508728

Я хотел бы построить этот фрейм данных (который на самом деле имеет 7 столбцов и 95 строк) на одном графике, где v2, v3, v4 представляют собой линии другого цвета с именами, подобными именам автомобилей, V1 - как метка оси x, тогда как ось y находится в диапазоне [0,1].

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

Ответы [ 3 ]

8 голосов
/ 05 мая 2011

Доктор предписывает небольшую модификацию фрейма данных Романа.

library(ggplot2)
my.cars <- data.frame(
  Toyota = runif(50), 
  Mazda = runif(50), 
  Renault = runif(50),
  Car = paste("Car", 1:50, ".txt", sep = "")  
)

my.cars.melted <- melt(my.cars, id.vars = "Car")

Затем он предполагает, что переменная машины выглядит категорично, поэтому вашим первым выбором будет столбчатая диаграмма.

p_bar <- ggplot(my.cars.melted, aes(Car, value, fill = variable)) +
  geom_bar(position = "dodge")
p_bar

Затем он отмечает, что для 95 автомобилей это может стать немного громоздким.Возможно, что точечный участок был бы более подходящим.

p_dot <- ggplot(my.cars.melted, aes(Car, value, col = variable)) +
  geom_point() +
  opts(axis.text.x = theme_text(angle = 90))
p_dot

Поскольку все еще немного сложно получить полезную информацию, возможно, было бы лучше упорядочить автомобили по среднему значению (независимо от значения)

my.cars.melted$Car <- with(my.cars.melted, reorder(Car, value))

(Затем перерисуйте p_dot, как и раньше.)

Наконец, доктор отмечает, что вы можете нарисовать линию, которую Роман рекомендовал с

p_lines <- ggplot(my.cars.melted, aes(as.numeric(Car), value, col = variable)) +
  geom_line()
p_lines
5 голосов
/ 05 мая 2011

Это должно помочь вам начать.

my.cars <- data.frame(Toyota = runif(50), Mazda = runif(50), Renault = runif(50)) #make some fake data for this example
plot(x = 1:nrow(my.cars), y = my.cars$Toyota, type = "n") #make an empty plot
with(my.cars, lines(x = 1:nrow(my.cars), y = Toyota, col = "red")) #add lines for Toyota
with(my.cars, lines(x = 1:nrow(my.cars), y = Mazda, col = "red")) # add lines for Mazda
with(my.cars, lines(x = 1:nrow(my.cars), y = Renault, col = "navy blue")) # add lines for Renault

Я использовал with(), чтобы вам не приходилось вводить my.cars$Toyota, my.cars$Mazda ... каждый раз, когда вы хотите вызвать столбец. Изучите ?par для получения дополнительных параметров, которые можно передать в plot. Врач с решением ggplot2 скоро увидит вас.

0 голосов
/ 06 мая 2011

Структура данных не может быть создана, как в примере, поэтому я немного изменяю:

tcars <- read.table(textConnection(" V1       Mazda     Toyota     Peugeot
    Car1.txt 0,507778837 0,19834711 0,146892655
    Car2.txt 0,908717802 0,64214047 0,396508728", header=TRUE, dec=",")
 # need to use dec arg with commas as decimal points!
 tcars
        V1     Mazda    Toyota   Peugeot
1 Car1.txt 0.5077788 0.1983471 0.1468927
2 Car2.txt 0.9087178 0.6421405 0.3965087

 matplot(data.matrix(tcars[-1]), type="b", xaxt="n")
 axis(1, labels=tcars[[1]],at=1:NROW(tcars))

Итоговый участок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...