当前位置:  开发笔记 > 编程语言 > 正文

在R中绘制简单数据

如何解决《在R中绘制简单数据》经验,为你挑选了3个好方法。

我有一个逗号分隔文件,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有点新,所以我仍然围绕着它.



1> luapyad..:

你不需要这两行:

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知识....



2> andrewj..:

在你的例子中,

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



3> 小智..:

我是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),调整轴,为每一行设置单独的选项等.

链接到在线文档.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有