在R中绘制data.frame

时间:2011-05-05 09:41:20

标签: r plot dataframe

我是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]范围内。 / p>

我真的不知道如何做到这一点,所以我非常感谢任何建议

3 个答案:

答案 0 :(得分:8)

医生对罗马的数据框略有修改。

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

答案 1 :(得分:5)

这应该让你开始。

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$Toyotamy.cars$Mazda ....浏览?par以获取可传递给plot的其他参数。有ggplot2解决方案的医生很快就会见到你。

答案 2 :(得分:0)

无法在示例中构建数据框,因此我稍微修改一下:

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))

Resulting plot