将googleVis图表嵌入网站

24
阅读googleVis软件包vignette的内容:"使用googleVis软件包,用户可以轻松创建基于R数据框架的交互式图表网页,并通过R.rsp软件包或在自己的网站内显示它们"。按照说明,我能够看到示例图表,使用gvis对象的plot方法。该方法默认在googleVis软件包的rsp/myAnalysis文件夹中创建一个rsp文件,使用对象的类型和图表ID信息,并使用R.rsp软件包的本地Web服务器(默认端口8074)显示输出。

有人能帮我(或提供一些链接),介绍如何将这样的图表嵌入现有网站(例如joomla网站)的过程吗?


2
如果您有一个Web服务器,那么将 .rsp 重命名为 .html,然后上传到您的服务器,并通过 http:// 访问。可能它会起作用。因此,如果 joomla 支持 <scirpt> 标签,则复制 .rsp 的内容将起作用。很抱歉我不熟悉 joomla。尽管我无法在我的WordPress站点中使用 <script> 发布,但它(重命名和上传)在我的私人网站上运行良好。 - kohske
对我来说没有用。似乎只有通过预处理 R 服务器页面的 HTTP 守护程序才能工作,并且只接受来自本地主机的连接。此外,例如 MotionChart rsp 文件包含一些行,如 <%@include file="../src/simpleHead.rsp"%>。在复制和粘贴后,它将如何访问那些文件(使用相对路径)? - gd047
嗨,嗯...对我来说它是有效的...@include指令与图表生成无关。因此,如果您通过apache访问motionchart .html,则指令本身会出现在页面上,但图表仍然有效。我们需要生成图表的所有内容都在.rsp文件中的<script>到<div>之间。因此,您可以在自己的网页中使用这些代码部分。 - kohske
换句话说,M1$html$chart,其中M1 <- gvisMotionChart(Fruits,idvar =“Fruit”,timevar =“Year”),似乎足以生成谷歌图表。如果有人知道我可以放置带有<script>标记的html的位置,我会展示一些例子 :-( - kohske
最终我发现Blogger支持<script>标签,这里有一个例子:http://takahashik.blogspot.com/2011/01/googlevis-example.html - kohske
5个回答

27
很明显我认为这对于@gd047来说太啰嗦了,但是我写了一个教程,因为对于其他想在自己网站上使用googleVis的读者可能会有所帮助。
从CRAN安装googleVis。
install.packages('googleVis')

注意消息。

然后,创建gvis对象:

library(googleVis)
M <- gvisMotionChart(Fruits, "Fruit", "Year")

您可以通过以下方式找到M的内容:

> M

你可以在浏览器上找到图表:

> plot(M)

那么,生成图表所需的是M $html $ chart:

> M$html$chart
[1] "<!-- MotionChart ... omitted... \">\n</div>\n"

将其保存到文件中:

> cat(M$html$chart, file="tmp.html")
如果你以文件形式打开“tmp.html”(例如,地址为files:///***/tmp.html),可能会出现安全警告。你需要通过http://访问html。
因此,如果你可以编辑任何包含

你是对的!这个方法对我也起作用了!你能否补充一下你的教程,展示如何创建一个图表,其中数据将会动态生成(例如通过使用RODBC查询数据库)? - gd047
嗨,听起来不错。您能告诉我“动态”是什么意思吗?您是指仅在R中获取数据并生成googleVis输出,还是其他什么? - kohske
我的意思是,也许我们可以混合使用HTML和R代码来动态创建内容(我再次对网站解决方案感兴趣)。软件包文档的第1.2段说:“图表数据可以嵌入到HTML文件中或动态读取”。然后在第2.5段中再次提到了这一点(与R.rsp软件包一起)。我认为这将非常棒。 - gd047
听起来非常有趣。那我会和它们玩一下。如果我得到了它们,我会在这里或其他地方发布。 - kohske
有没有任何想法可以让这个东西在 file:// 协议下工作?我没有收到任何警告,但它就是不工作 :( 是安全设置的问题吗? - VitoshKa
解决了!问题出在Flash安全性上,需要在这里进行更改。 - VitoshKa

8
如果您想手动将图表复制粘贴到CMS(例如Joomla / Wordpress站点),则可以从“gvis”对象的HTML列表中执行此操作。就像@kohske建议的那样:
# demo data from manual
M <- gvisMotionChart(Fruits, "Fruit", "Year")
# write the HTML body to a temporary file without header and footer
cat(M$html$chart, file="temp.html")
# or with caption included:
cat(paste(M$html[c("chart", "caption")], collapse="\n"), file="temp.html")

将temp.html的内容复制并粘贴到您的Joomla网站上。请注意,应将代码作为HTML内容粘贴,而不是在所见即所得编辑器(例如Tiny MCE)中粘贴!

如果您想在单独的页面上显示它,请不要忘记包括页眉和页脚:

# demo data from manual
M <- gvisMotionChart(Fruits, "Fruit", "Year")
# write the HTML to a temporary file with header and footer all included
cat(paste(M$html, collapse="\n"), file="temp.html")

最后:您可以轻松地将此文档上传到FTP服务器,并通过任何浏览器访问它。

当然,你也可以在本地机器上打开这个(后者)temp.html文件,无需Web服务器,感谢@ViroshKa指出! - daroczig

1
您可以选择编写以下代码。
print(M,"chart", file="myfile")

把HTML输出复制粘贴到您的网页上,就可以运行GoogleVis图表。

这对我没用。myfile.html在Chrome/Firefox中呈现为空白页面。 - narendra-choudhary

1

Flash内容可能无法在本地计算机上运行。我不得不更改{{link1:Adobe网站}}上的安全限制才能使其正常工作。

现在,按照daroczig的说明,可以在本地浏览器中查看内容,而不必完全依赖于R.rsp。


0
我有一个脚本可以在数据更新时自动运行,并使用RCurl和googleVis在网站上放置GoogleVis图表。以下是一个示例,其中visChart是图表:
library(RCurl)
library(googleVis)

制作 visChart

write(visChart$html$chart, file='visChart.html')
ftpUpload('visChart.html', "ftp://username:password@example.com/path/to/'visChart.html")

visChart$html$chart 只提供图表的 HTML,不包括页脚,因此我在我的 HTML 中使用 iframe 访问此图表。如果您正在使用 Google 网站、博客或想要一个 Google 小工具,您可以使用 createGoogleGadget():

write(createGoogleGadget(visChart), file='visChart.xml')
ftpUpload('visChart.xml', "ftp://username:password@example.com/path/to/'visChart.xml")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接