h******t 发帖数: 10 | 1 我刚刚开始自学R,作图的时候遇到了一些问题。可能很基本,但是搜索了半天也没有找
到答案。这里高手多,请大家帮我看看。
我需要做一个 scatterplot 的matrix,找到了 asbio package。 我是这么做的:
data <-read.csv (file.choose(), header=TRUE, sep=",")
library(asbio)
attach(data)
panel.cor.res(x, y, digits = 2, meth = "spearman", cex.cor=1)
panel.lm(x, y, col =1, bg = NA, pch = 16, cex = 1,
col.line = 2, lty = 1)
pairs(data, cex.labels=1, cex=.95, gap=.1, lower.panel=panel.cor.res, upper.
panel=panel.lm)
panel.cor.res 和 panel.lm 是asbio 里的function,可是每次总是出错:
> panel.cor.res(x, y, digits = 2, meth = "spearman", cex.cor=1)
Error in is.data.frame(y) : object 'y' not found
> panel.lm(x, y, col =1, bg = NA, pch = 16, cex = 1,
+ col.line = 2, lty = 1)
Error in points(x, y, pch = pch, col = col, bg = bg, cex = cex) :
object 'x' not found
实在不知道怎么解决了。大家能帮帮我么。 | b*******n 发帖数: 8420 | | J******r 发帖数: 2806 | 3 scatterplot也需要用package么。。。
anyway, 我觉得你的data input有点问题。
如果可以,你可不可以贴投一行of your data file上来 | x******m 发帖数: 736 | 4 1.you may want to use scatterplot() in R,which is easier to be handle for
new users.
2. Don't use "data" as variable name!!! It's a function in R!!! This mistake
is common in rookie programmers.
3. R complains it cannot find y variable. something wrong with your data or
variable name. post your data here. | h******t 发帖数: 10 | 5 谢谢大家的回复。我贴几行data 上来。我目的是想要做一个matrix 的scatter plot。
upper panel包含 correlation coefficient,lower panel 包含数据的scatterplot,
最好含有estimated trendline,线性即可,不用panel。smooth,那个smooth出来对我
的结果没有什么意义。
网上有一个写好的R程序,不需要用package,但是有很多function,我看不太懂,而且
不能换 correlation的method,比如pearson, spearman (或者是我换的地方不对,
出错了)。
以下几行是我的data,第一行是header,我用了header = TRUE,一共是8个column。我
希望能把这8个vector做一个 scatterplot matrix。请大家多给我指点指点。早上看到
bronstein的回复,我又试了试用read。table,还是没能解决问题。
num_rev_z size_tran_z mode_rev_z cir_cb_z t_log2_-z soft_sq_z
hard_sq_z sp_sqrt_z
-0.547192766 -0.868636422 -1.052436002 -0.484344371 0 1.
816662392 -0.373535719 0.095527427
-0.440678884 0.037311032 1.106336502 -0.711983195 0 -0.
284128179 -0.080620804 -0.921497753 | c*****g 发帖数: 66 | 6 你把这俩行去了试试
##
panel.cor.res(x, y, digits = 2, meth = "spearman", cex.cor=1)
panel.lm(x, y, col =1, bg = NA, pch = 16, cex = 1,
col.line = 2, lty = 1)
##
这俩行不需要的
另外
head(data)
看看你的数据是不是被读进来了
upper.
【在 h******t 的大作中提到】 : 我刚刚开始自学R,作图的时候遇到了一些问题。可能很基本,但是搜索了半天也没有找 : 到答案。这里高手多,请大家帮我看看。 : 我需要做一个 scatterplot 的matrix,找到了 asbio package。 我是这么做的: : data <-read.csv (file.choose(), header=TRUE, sep=",") : library(asbio) : attach(data) : panel.cor.res(x, y, digits = 2, meth = "spearman", cex.cor=1) : panel.lm(x, y, col =1, bg = NA, pch = 16, cex = 1, : col.line = 2, lty = 1) : pairs(data, cex.labels=1, cex=.95, gap=.1, lower.panel=panel.cor.res, upper.
| h******t 发帖数: 10 | 7 我用了head,读出了前6行,是对的么。如果用read之后直接>mydata,是可以把我的
data全部读出的。
不用那两行的话,如何能在upper panel 和 lower panel 输出不同的信息呢。比如
upper 输出数字的correlation,lower输出scattered plot,外带线性的 trendline?
我知道我的问题比较多,多谢多谢。
【在 c*****g 的大作中提到】 : 你把这俩行去了试试 : ## : panel.cor.res(x, y, digits = 2, meth = "spearman", cex.cor=1) : panel.lm(x, y, col =1, bg = NA, pch = 16, cex = 1, : col.line = 2, lty = 1) : ## : 这俩行不需要的 : 另外 : head(data) : 看看你的数据是不是被读进来了
| c*****g 发帖数: 66 | 8 那么你试了去掉那俩行的结果了吗?你的pairs里面的upper和lower的arguments指明了
用什么function去算了。
【在 h******t 的大作中提到】 : 我用了head,读出了前6行,是对的么。如果用read之后直接>mydata,是可以把我的 : data全部读出的。 : 不用那两行的话,如何能在upper panel 和 lower panel 输出不同的信息呢。比如 : upper 输出数字的correlation,lower输出scattered plot,外带线性的 trendline? : 我知道我的问题比较多,多谢多谢。
| h******t 发帖数: 10 | 9 啊,我太弱了,居然不知道可以直接用这两个function。我试了,可以作图。但是又有
了问题,只用最后一行的话,怎么样选择panel.cor.res 里面的meth呢?默认的是
pearson 吧,如果换成 spearman,我想当然的用了:
pairs(mydata, cex.labels=1, cex=.95, gap=.1, lower.panel=panel.cor.res(
method=”spearman”), upper.panel=panel.lm)
结果行不通。 :(((((
【在 c*****g 的大作中提到】 : 那么你试了去掉那俩行的结果了吗?你的pairs里面的upper和lower的arguments指明了 : 用什么function去算了。
| c*****g 发帖数: 66 | 10 我猜的,你可以试试,或者你可以尝试修改panel.cor.res
lower.panel = function(x, y, ...) { panel.cor.res(x, y, meth = "spearman") }
【在 h******t 的大作中提到】 : 啊,我太弱了,居然不知道可以直接用这两个function。我试了,可以作图。但是又有 : 了问题,只用最后一行的话,怎么样选择panel.cor.res 里面的meth呢?默认的是 : pearson 吧,如果换成 spearman,我想当然的用了: : pairs(mydata, cex.labels=1, cex=.95, gap=.1, lower.panel=panel.cor.res( : method=”spearman”), upper.panel=panel.lm) : 结果行不通。 :(((((
| | | h******t 发帖数: 10 | 11 成了!太感谢了!有高手点拨好过自己瞎撞啊。
我刚刚才接触 R,觉得很有用。可是没有什么编程的基础,每次都是靠google 或者
youtube,很多command看得不太懂是什么意思。能请你介绍几个适合新手学习的网站或
者资料么,谢谢了。
}
【在 c*****g 的大作中提到】 : 我猜的,你可以试试,或者你可以尝试修改panel.cor.res : lower.panel = function(x, y, ...) { panel.cor.res(x, y, meth = "spearman") }
| c*****g 发帖数: 66 | 12 也许有的人会建议你看书,我个人的看法,对于R这种语法不严格的工具,由于在各种
mailing list上问答的太多了,其实 google + 实际问题 + 实践 是最好的学习方法。
当然如果你想看书,google一下R的tutorial,到处都是。
复杂点的问题,google + mailing list 提问会快很多。
【在 h******t 的大作中提到】 : 成了!太感谢了!有高手点拨好过自己瞎撞啊。 : 我刚刚才接触 R,觉得很有用。可是没有什么编程的基础,每次都是靠google 或者 : youtube,很多command看得不太懂是什么意思。能请你介绍几个适合新手学习的网站或 : 者资料么,谢谢了。 : : }
| h******t 发帖数: 10 | 13 非常感谢,看来不是一时之功。要多看多练。
我刚才用你给我改正的 function,也照样改了一下原来的,也可以画一样的图了 :)
,不过就是在 pair 里面不知道为什么不能用cex=。95了,如果删掉就可以。那两个星
号是我后加的,指出cex 的位置。可不可以再麻烦你指教一下。
> pairs.mine <- function(x,y,...) {panel.cor.res(x,y,digits=3,meth="pearson"
)}
> pairs.up <- function(x, y,...) {panel.lm(x,y,col =1, bg = NA, pch = 16,
cex = 1,
+ col.line = 2, lty = 1 )}
> pairs(zscore, cex.labels=1, gap=0.1, **cex=.95**, lower.panel=pairs.up,
upper.panel=pairs.mine)
法。
【在 c*****g 的大作中提到】 : 也许有的人会建议你看书,我个人的看法,对于R这种语法不严格的工具,由于在各种 : mailing list上问答的太多了,其实 google + 实际问题 + 实践 是最好的学习方法。 : 当然如果你想看书,google一下R的tutorial,到处都是。 : 复杂点的问题,google + mailing list 提问会快很多。
| c*****g 发帖数: 66 | 14 你的pairs.up里已经有cex了,把它删去就可以了。
pearson"
【在 h******t 的大作中提到】 : 非常感谢,看来不是一时之功。要多看多练。 : 我刚才用你给我改正的 function,也照样改了一下原来的,也可以画一样的图了 :) : ,不过就是在 pair 里面不知道为什么不能用cex=。95了,如果删掉就可以。那两个星 : 号是我后加的,指出cex 的位置。可不可以再麻烦你指教一下。 : > pairs.mine <- function(x,y,...) {panel.cor.res(x,y,digits=3,meth="pearson" : )} : > pairs.up <- function(x, y,...) {panel.lm(x,y,col =1, bg = NA, pch = 16, : cex = 1, : + col.line = 2, lty = 1 )} : > pairs(zscore, cex.labels=1, gap=0.1, **cex=.95**, lower.panel=pairs.up,
| h******t 发帖数: 10 | 15 哦,你这样一说我知道了,cex.label已经定义了 vector 的label大小了,所以cex 本
来是定义pair.lm的,但是在pair.up里定义了,就不需要了,对吧。
【在 c*****g 的大作中提到】 : 你的pairs.up里已经有cex了,把它删去就可以了。 : : pearson"
| h******t 发帖数: 10 | 16 非常感谢你今天的耐心帮助,也谢谢楼上的各位。
【在 c*****g 的大作中提到】 : 你的pairs.up里已经有cex了,把它删去就可以了。 : : pearson"
|
|