8

ggplot2プロットにハイパーリンクを提供しようとしています:

これは機能します:

library(gridSVG)
library(lattice)

xyplot(mpg~wt, data=mtcars, main = "Link to R-project home")
mainGrobName <- grep("main", grid.ls()[[1]], value=TRUE)
grid.hyperlink(mainGrobName, "http://www.r-project.org")
gridToSVG("HyperlinkExample.svg")

これではありません:

p = ggplot(mtcars, aes(wt, mpg)) + geom_point()+ labs(title="link")
print(p)
mainGrobName <- grep("title", grid.ls()[[1]], value=TRUE)
grid.hyperlink(mainGrobName, "http://www.r-project.org")
gridToSVG("HyperlinkExample.svg")

これに関するヒントはありますか?

4

2 に答える 2

4

gridSVGパッケージの作成者の1人であるSimonPotterに質問しました。彼の(実用的な)答えは次のとおりです。

ここで開発バージョンを試すことをお勧めします:

http://r-forge.r-project.org/R/?group_id=1025

特にgTables(したがってggplot2グラフィックス)を処理するための回避策が含まれています。

したがって、例を機能させるには、新しいRセッションを開始し、次のコードを実行します。

install.packages("gridSVG", repos="http://R-Forge.R-project.org")
library(gridSVG)
library(ggplot2)
(p <- ggplot(mtcars, aes(wt, mpg)) + geom_point() + labs(title="link"))
titleGrobName <- grep("title", grid.ls(print=FALSE)$name, value=TRUE)
grid.hyperlink(titleGrobName, "http://www.r-project.org/")
gridToSVG("HyperlinkExample.svg", "none", "none")

ここでの唯一の実際の違いは、gridToSVG()に指定された追加のパラメーターです。これは主に、出力をSVGファイルとHTMLラッパーのみに減らすためです(そうしないと、JSONデータも取得されますが、これは例としては役に立ちません)。

于 2013-01-07T09:20:11.487 に答える
0

正しいものを取得する限り、mainGrobNameこのコードは成功します(そして、設定によって気が散る副作用を作成しませんprint=FALSE):

grep("title", grid.ls(print=FALSE)$name, value=TRUE)
#[1] "title.2-4-2-4"

プロットオブジェクトの構造は、ラティスの状況よりも明らかに複雑であり、gridToSVGはデフォルトでそれをキャプチャしません。

grep("title", grid.ls()$name, value=TRUE)
#--------------------
GRID.gTableParent.125
  background.1-5-6-1
  spacer.4-3-4-3
  panel.3-4-3-4
    grill.gTree.103
      panel.background.rect.94
      panel.grid.minor.y.polyline.96
      panel.grid.minor.x.polyline.98
      panel.grid.major.y.polyline.100
      panel.grid.major.x.polyline.102
    geom_point.points.90
    panel.border.zeroGrob.91
  axis-l.3-3-3-3
    axis.line.y.zeroGrob.113
    axis
  axis-b.4-4-4-4
    axis.line.x.zeroGrob.107
    axis
  xlab.5-4-5-4
  ylab.3-2-3-2
  title.2-4-2-4

これも興味深い出力ですが、gridToSVGを取得して有用なHTMLオブジェクトに変換する方法がわかりません。

grid.ls( print=pathListing )$name
于 2012-12-29T03:15:18.907 に答える