用Rexcel调用R ggplot

时间:2014-03-18 21:28:44

标签: r vba ggplot2 rexcel

我单击一个excel宏按钮,它使用RExcel执行生成矩阵的R脚本

     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
 [1,]    0    0   -3   -3   -3   -3   -2
 [2,]    0    0    0    0    4    4    4
 [3,]    0    0    0    1    2    1    2
 [4,]    0    0    0    0    0    0    1
 [5,]    0    0    0    0    1    1    1
 [6,]    0    0    0    0    1    1    1
 [7,]    0    0    0    0    0    0    0
 [8,]    0    0    0    0    0    0    0
 [9,]    0    0    0    0    0    0    0
[10,]    0    0    0    0    0    0    1
[11,]    0    0    0    0    0    0    1
[12,]    0    1    1    1    1    1    1
[13,]    0    0    0    0    0    0    0
[14,]    0    0    0    0    0    0    0
[15,]    0    0    0    0    0    0    0
[16,]    0   -1    3    3    3    4    3
[17,]    0    1    2    2    2    1    0
[18,]    0    0    0    0    0    0    0
[19,]    0   -1   -2   -2   -2   -1   -1
[20,]    0   -2   -2   -3   -3   -5   -4
[21,]    0    0    0    0    0    0    0
[22,]    0    0    0    0    0    0    0
[23,]    0    1    1    1    1    1    1
[24,]    0    0    1    1    1    0    1
[25,]    0    0    1    1    1    0    1
[26,]    0    0    1    1    1    1    2
[27,]    0    0    0    0    0    0    1
[28,]    0    0    0    0    0    0    0
[29,]    0    0    0    0    0    0    0
[30,]    0    0    0    0    0    0    0
[31,]    0    0    0    0    0    0    0

我将其更改为data.frame。

之前设置一个browser()
ggplot(melt(graphPrep),aes(value,fill=variable)) + geom_histogram(position = "dodge",binwidth = 1/(buckWidth-1)) + scale_x_continuous(breaks = min(graphPrep):max(graphPrep))

你可以使用5代表buckWidth,如果你正在复制则会破坏-5:5

然后把那条线放入R,点击回车,它就是一个很好的情节。 但是,如果我只是按" n"几次尝试执行该行(或完全删除浏览器),图表永远不会出现。

我想从excel中完全执行此操作,但我现在正在定义

drawIt <- function()
  {
    ggplot(melt(graphPrep),aes(value,fill=variable)) + geom_histogram(position = "dodge",binwidth = 1/(buckWidth-1)) + scale_x_continuous(breaks = min(graphPrep):max(graphPrep))
  }

并使用户&#34; drawIt()&#34;在r控制台中。我想在excel中完成这项工作......

1 个答案:

答案 0 :(得分:1)

像这样令人尴尬的是,如果其他人遇到同样的问题,我会把它留下来

print(drawIt())