我是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>
我真的不知道如何做到这一点,所以我非常感谢任何建议
答案 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$Toyota
,my.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))