我是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
Run Code Online (Sandbox Code Playgroud)
我想在一个图中绘制这个数据帧(实际上有7列和95行),其中v2,v3,v4代表一条不同颜色的线,并命名为汽车名称,V1作为x-的标签轴,而y轴在[0,1]范围内.
我真的不知道如何做到这一点,所以我非常感谢任何建议
医生对罗马的数据框进行了略微修改.
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")
Run Code Online (Sandbox Code Playgroud)
然后他建议看起来汽车变量是绝对的,所以你的第一选择是条形图.
p_bar <- ggplot(my.cars.melted, aes(Car, value, fill = variable)) +
geom_bar(position = "dodge")
p_bar
Run Code Online (Sandbox Code Playgroud)
然后他指出,对于95辆汽车来说,这可能会有点麻烦.也许点图更合适.
p_dot <- ggplot(my.cars.melted, aes(Car, value, col = variable)) +
geom_point() +
opts(axis.text.x = theme_text(angle = 90))
p_dot
Run Code Online (Sandbox Code Playgroud)
因为从中获取有用信息仍然有点棘手,最好按平均值订购汽车(无论价值是多少)
my.cars.melted$Car <- with(my.cars.melted, reorder(Car, value))
Run Code Online (Sandbox Code Playgroud)
(然后p_dot像以前一样重绘.)
最后,医生指出你可以绘制罗马推荐的线图
p_lines <- ggplot(my.cars.melted, aes(as.numeric(Car), value, col = variable)) +
geom_line()
p_lines
Run Code Online (Sandbox Code Playgroud)
这应该让你开始.
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
Run Code Online (Sandbox Code Playgroud)
我使用with()这样你不必输入my.cars$Toyota,my.cars$Mazda...每次你想要调用一列.探索?par可传递给的其他参数plot.有ggplot2解决方案的医生很快就会见到你.