2017-09-02 9 views
3

エクスポートされたggplotプロットの細かいアンチエイリアスを取得できますか?私はCairoパッケージといくつかの異なるデバイスを試しましたが、それらはすべてエッジがギザギザに見えます。ggplotエクスポートのアンチエイリアス

library(ggplot2) 
library(Cairo) 

p <- ggplot(data.frame(x=1:5,y=1:5),aes(x=x,y=y))+ 
    geom_text(aes(2.5,2.5),label="Brown Fox bla bla..",size=5)+ 
    labs(x=NULL,y=NULL)+ 
    theme_bw()+ 
    theme(plot.background=element_blank(), 
     plot.margin = margin(c(0,0,0,0)), 
     axis.title = element_blank(), 
     axis.text = element_blank(), 
     axis.ticks = element_blank(), 
     axis.line = element_blank(), 
     panel.grid = element_blank(), 
     panel.border = element_blank(), 
     panel.background = element_blank()) 

png("test-nocairo.png",height=2,width=6,units="cm",res=300) 
print(p) 
dev.off() 

png("test-cairo.png",height=2,width=6,units="cm",res=300,type="cairo") 
print(p) 
dev.off() 

tiff("test-cairo.tiff",height=2,width=6,units="cm",res=300,type="cairo") 
print(p) 
dev.off() 

ggsave("test-ggsave.png",height=2,width=6,units="cm",dpi=300,type="cairo") 

png-nocairo PNG、私のためのカイロ

png-cairo PNGカイロ

tiff-cairo TIFFカイロ

png-ggsave-cairo PNG ggsaveカイロ

300dpiで画像がPNGまたはTIFF(無損失)であることが重要です。私はベクトル形式(SVG、PDFなど)にエクスポートし、別のプログラムを使用してPNG/TIFFに変換できることを認識していますが、それは明らかに余分な作業です。 Rに、私が見落としている解決策があるかどうか不思議です。参考

photoshop

、上記フォトショップからのレンダリングの品質です。 PNG Arial 14pt。

答えて

1

私はここで何かを見つけたかもしれない。 geom_textではなくannotateを使用すると、cairoのアンチエイリアスが機能するようです。

p <- ggplot(data.frame(x=1:5,y=1:5),aes(x=x,y=y))+ 
    annotate("text",x=2.5,y=2.5,label="Brown Fox bla bla..",size=5)+ 
    labs(x=NULL,y=NULL)+ 
    theme_bw()+ 
    theme(plot.background=element_blank(), 
     plot.margin = margin(c(0,0,0,0)), 
     axis.title = element_blank(), 
     axis.text = element_blank(), 
     axis.ticks = element_blank(), 
     axis.line = element_blank(), 
     panel.grid = element_blank(), 
     panel.border = element_blank(), 
     panel.background = element_blank()) 

png("test-annotate-cairo.png",height=2,width=6,units="cm",res=300,type="cairo") 
print(p) 
dev.off() 

png-annotate-cairo

geom_textが問題になる可能性があります、同じテキストをoverplottingされるようなので、それはそうです。私はこのオーバープロットのことがある時点で修正されたと思った。アンチエイリアスの改善の余地はまだあると思いますが、以前よりもはるかに優れています。

+0

はい、間違い、アンチエイリアスとは関係ありません。 'geom_text'を元のコードのオーバープロットに置き換えます。だから、「注釈」が存在するのです。あるいは、テキストレイヤに別のデータセットを使用します。 – baptiste