3

これが非常に簡単な場合は申し訳ありません。実際、そうなることを願っています!

テキストから画像を動的に作成しようとしています。次に、サイズを変更してプロット (引き伸ばしたり押しつぶしたり) して、モチーフ タイプのグラフを作成します。

私は画像(とを使用して生成したもの)を使用して開始しpng()、それらを次ggplot()のようにプロットしましたannotation_custom()

require(ggplot2)
require(grid)
require(gridExtra)
qplot(c(0,10),c(0,10)) + 
annotation_custom(rasterGrob(image=readPNG("1999.png"),x=0,y=0,height=1,width=1,just=c("left","bottom")),
              xmin=0,xmax=5,ymin=0,ymax=7.5)

生産する:

ここに画像の説明を入力

これは問題ありませんが、同じサイズでない場合に を使用して画像を動的に作成するのは厄介ですpng()。さらに、それらをファイルに保存するのは面倒なので、textGrob を使用できるかどうかを確認しようとしました。

myText<-"1000"
myTextGrob<-textGrob(myText,just=c("left","bottom"),gp=gpar(fontsize="100",col="red",fontfamily="Showcard Gothic"))
qplot(c(0,10),c(0,10))+annotation_custom(myTextGrob,0,0,0,0)

これは問題ありませんが、....

テキストグロブ

...同じように伸ばしたり歪めたりすることはできないようですrasterGrobので、私の質問は-textGrobを作成してrasterGrobに強制することは可能ですか? または、textGrob を歪ませたり伸ばしたりできる別の解決策はありますか?

前もって感謝します!

4

1 に答える 1

2

一時ファイルを作成しないと簡単ではないようです。ラスター ファイルの代わりに、grImport パッケージでベクター パスを使用できます。テキストのインポートには 2 つのオプションがあります。

  • パスとして; 動作しますが (以下の例)、中間ファイルを使用して ps から xml への変換ステップをバイパスする明らかな方法はありません。

  • テキスト文字列として; この場合、xml ははるかに短く、R から直接作成できますが、残念ながら 2 つの軸を個別に変換する方法が見つかりませんでした。


library(grImport)

scale_text <- function(text="hello world", scale=4, tmp=tempfile()){
  tmp.ps <- paste0(tmp, ".ps")
  tmp.xml <- paste0(tmp, ".xml")
  string.ps <- paste0('%!PS
                    /Courier             % name the desired font
                    20 selectfont        % choose the size in points and establish 
                    % the font as the current one
                    1 ', scale, ' scale            % scale axis
                    72 500 moveto        % position the current point at 
                    % coordinates 72, 500 (the origin is at the 
                    % lower-left corner of the page)
                    (', text, ') show  % stroke the text in parentheses
                    showpage             % print all on the page
                    ')
  cat(string.ps, file=tmp.ps)
  PostScriptTrace(tmp.ps, tmp.xml)
  readPicture(tmp.xml)
}


hello <- scale_text()
grid.newpage()
grid.picture(hello)

ここに画像の説明を入力

于 2013-12-04T12:44:32.920 に答える