首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >chart.Correlation独立变量与因变量可视化

chart.Correlation独立变量与因变量可视化
EN

Stack Overflow用户
提问于 2012-10-04 08:22:53
回答 1查看 1.5K关注 0票数 0

在R中,我有一个有一个自变量和9个因变量的数据集,我想看到散点图,直方图加上chart.Correlation()中的相关值,但我不想看到因变量variables...as之间的相关性,这是不必要的。

也就是说,在下面的模拟示例中,我只关心/想要看到顶行和最左边的列,以及所有的直方图,所有的红线和重要星等,但我不关心/不想要所有其他散点图和相关值。这是否可能/是否有一种整洁的方式在一个可视化中看到所有这些……即自变量vs所有因变量...?

模拟示例:

代码语言:javascript
复制
d <- xts(matrix(rnorm(10000),ncol=10), Sys.Date()-1000:1)
library(PerformanceAnalytics)
chart.Correlation(d)

顺便说一句……我对chart.Correlation生成的一些相关值的字体大小感到有点恼火……任何设置最小和最大字体大小的方法,以便字体大小不会变得不可读...

此外,请随时使用您认为可能有助于找到问题解决方案的任何其他软件包(例如ggplot2等)。

提前感谢

编辑:

这就是我到目前为止使用ggplotplyr得出的结论……我仍然没有看到独立的variable...oh和multiplot的柱状图,它们来自这里:http://wiki.stdout.org/rcookbook/Graphs/Multiple%20graphs%20on%20one%20page%20(ggplot2)/

现在已经将其作为answer...but包含在内,任何其他建议/改进都会得到很好的接受。

代码语言:javascript
复制
require(plyr)
require(ggplot2)

indep.dep.cor <- function(xts.obj, title=""){

        # First column always assumed to be independent
        df <- data.frame(coredata(xts.obj))
        assign('df',df,envir=.GlobalEnv)

        df.l <- melt(df, id.vars=colnames(df)[1], measure.vars=colnames(df)[2:ncol(df)])
        assign('df.l',df.l, envir=.GlobalEnv)

        cor.vals <- ddply(df.l, c("variable"), summarise, round(cor(df[,1],value),3))
        stars <- ddply(df.l, c("variable"), summarise, symnum(cor.test(df[,1],value)$p.value, corr = FALSE, na = FALSE, cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " ")))
        cor.vals$stars <- stars[,2]
        assign('cor.vals',cor.vals,envir=.GlobalEnv)

        bin.w <- min((ddply(df.l,c("variable"),summarise,diff(range(value))/30))[,2])

        m1 <- ggplot(df.l,aes_string(x="value"))+
            facet_grid(.~variable)+
            stat_density(aes(y=..density..),fill=NA, colour="red", size=1.2)+
            geom_histogram(aes(y=..density..),fill="white", colour="black", binwidth=bin.w)+
            opts(title=title)

        m2 <- ggplot(df.l,aes_string(x=colnames(df.l)[1], y="value"))+
            facet_grid(.~variable)+geom_point(aes(alpha=0.2))+
            opts(legend.position="none")+
            geom_text(data=cor.vals,aes(label=paste(cor.vals[,2],cor.vals[,3]),size=abs(cor.vals[,2])*2,colour=cor.vals[,2]),x=Inf,y=Inf,vjust=1,hjust=1,show_guide=FALSE)+
                scale_colour_gradient(low = "red", high="blue")+
                geom_smooth(method="loess")

        multiplot(m1,m2,cols=1)
}

indep.dep.cor(d)
EN

回答 1

Stack Overflow用户

发布于 2012-10-04 15:00:12

这就是我到目前为止使用ggplotplyr得出的结论……我仍然没有看到独立的variable...oh和multiplot的柱状图,它们来自这里:http://wiki.stdout.org/rcookbook/Graphs/Multiple%20graphs%20on%20one%20page%20(ggplot2)/

代码语言:javascript
复制
require(plyr)
require(ggplot2)

indep.dep.cor <- function(xts.obj, title=""){

        # First column always assumed to be independent
        df <- data.frame(coredata(xts.obj))
        assign('df',df,envir=.GlobalEnv)

        df.l <- melt(df, id.vars=colnames(df)[1], measure.vars=colnames(df)[2:ncol(df)])
        assign('df.l',df.l, envir=.GlobalEnv)

        cor.vals <- ddply(df.l, c("variable"), summarise, round(cor(df[,1],value),3))
        stars <- ddply(df.l, c("variable"), summarise, symnum(cor.test(df[,1],value)$p.value, corr = FALSE, na = FALSE, cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " ")))
        cor.vals$stars <- stars[,2]
        assign('cor.vals',cor.vals,envir=.GlobalEnv)

        bin.w <- min((ddply(df.l,c("variable"),summarise,diff(range(value))/30))[,2])

        m1 <- ggplot(df.l,aes_string(x="value"))+
            facet_grid(.~variable)+
            stat_density(aes(y=..density..),fill=NA, colour="red", size=1.2)+
            geom_histogram(aes(y=..density..),fill="white", colour="black", binwidth=bin.w)+
            opts(title=title)

        m2 <- ggplot(df.l,aes_string(x=colnames(df.l)[1], y="value"))+
            facet_grid(.~variable)+geom_point(aes(alpha=0.2))+
            opts(legend.position="none")+
            geom_text(data=cor.vals,aes(label=paste(cor.vals[,2],cor.vals[,3]),size=abs(cor.vals[,2])*2,colour=cor.vals[,2]),x=Inf,y=Inf,vjust=1,hjust=1,show_guide=FALSE)+
                scale_colour_gradient(low = "red", high="blue")+
                geom_smooth(method="loess")

        multiplot(m1,m2,cols=1)
}

indep.dep.cor(d)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12718743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档