我有一个逗号分隔文件,foo.csv
其中包含以下数据:
scale, serial, spawn, for, worker 5, 0.000178, 0.000288, 0.000292, 0.000300 10, 0.156986, 0.297926, 0.064509, 0.066297 12, 2.658998, 6.059502, 0.912733, 0.923606 15, 188.023411, 719.463264, 164.111459, 161.687982
我基本上有两个问题:
1)如何绘制第一列(x轴)与第二列(y轴)?我正在尝试这个(从阅读本网站):
data <- read.table("foo.csv", header=T,sep=",") attach(data) scale <- data[1] serial <- data[2] plot(scale,serial)
但我得到了这个错误:
Error in stripchart.default(x1, ...) : invalid plotting method
知道我做错了什么吗?一个快速谷歌搜索揭示了别人同样的问题,但没有相关的答案.更新:事实证明,如果我跳过中间的两个赋值语句,它可以正常工作.知道为什么会这样吗?
第二个问题在第一个问题之后非常容易:
2)如何绘制第一列(x轴)与y轴上的所有其他列?一旦我解决了我遇到的第一个问题,我认为这很容易,但我只是对R有点新,所以我仍然围绕着它.
你不需要这两行:
scale <- data[1] serial <- data[2]
因为比例和序列已经从标题中设置read.table
.
还scale <- data[1]
从a创建一个元素data.frame
data[1] 1 5 2 10 3 12 4 15
而scale
来自read.table
是一个向量
5 10 12 15
而且plot(scale, serial)
函数需要vector而不是data.frame,所以你只需要做
plot(scale, serial)
在y轴上绘制其他数据列的一种方法:
plot(scale,serial, ylab="") par(new=TRUE) plot(scale,spawn,axes=F, ylab="", type="b") par(new=TRUE) plot(scale,for., axes=F, ylab="", type="b") par(new=TRUE) plot(scale,worker,axes=F, ylab="", type="b")
可能有更好的方法来做到这一点,但这超出了我目前的R知识....
在你的例子中,
plot(scale, serial)
将无法工作,因为scale
并且serial
都是数据框,例如
class(scale) [1] "data.frame"
您可以尝试以下操作,points()
并在生成绘图后使用绘制剩余的列.注意,我使用ylim
参数plot
来容纳第三列中的范围.
data <- read.csv('foo.csv', header=T) plot(data$scale, data$serial, ylim=c(0,750)) points(data$scale, data$spawn, col='red') points(data$scale, data$for., col='green') points(data$scale, data$worker, col='blue')
我是R的新手,但是如果你想在一个情节中绘制比例与所有其他列,简单而且有一些优雅:)用于打印或演示,你可以使用Hadley Wickham教授的包ggplot2和reshape.
安装:
install.packages(“ggplot2”,dep=T) install.packages(“reshape”,dep=T)
绘制你的例子:
library(ggplot2) library(reshape) #read data data = read.table("foo.csv", header=T,sep=",") #melt data “scale vs. all” data2=melt(data,id=c("scale")) data2 scale variable value 1 5 serial 0.000178 2 10 serial 0.156986 3 12 serial 2.658998 4 15 serial 188.023411 5 5 spawn 0.000288 6 10 spawn 0.297926 7 12 spawn 6.059502 8 15 spawn 719.463264 9 5 for. 0.000292 10 10 for. 0.064509 11 12 for. 0.912733 12 15 for. 164.111459 13 5 worker 0.000300 14 10 worker 0.066297 15 12 worker 0.923606 16 15 worker 161.687982 #draw all variables at once as line with different linetypes qplot(scale,value,data=data2,geom="line",linetype=variable)
您还可以使用点(geom=”points”
),为不同的变量选择不同的颜色或形状点(colours=variable or shape=variable
),调整轴,为每一行设置单独的选项等.
链接到在线文档.