LoginSignup
4
3

More than 5 years have passed since last update.

関数unitを見つけることができませんでした

Last updated at Posted at 2015-02-25

gglot2を使っている時に、themeを設定しようとするとエラーを吐きます。今回はtheme関数のplot.marginを利用して、グラフ外の余白を設定しているときに起こりました。ggplot2のバージョンは1.0.0。

test.r
##テストデータの用意
test<- data.frame("Day"=c(1,3,5),"Score"=c(10,20,30))

##折れ線グラフを描く

library(ggplot2)
ggplot() + 
geom_line(data=test,aes(x=Day,y=Score),size=0.4,alpha=0.4) + geom_point(data=test,aes(x=Day,y=Score),alpha=0.7)


このままですと、余白をほとんど明けずにplotが生成されます。
スクリーンショット 2015-02-25 18.23.12.png

これを解決するために、theme関数を用いて余白のサイズを指定します。

plus.theme.r
library(ggplot2)
ggplot() + 
geom_line(data=test,aes(x=Day,y=Score),size=0.4,alpha=0.4) + geom_point(data=test,aes(x=Day,y=Score),alpha=0.7)+
theme(plot.margin = unit(c(5, 5, 5, 5), "cm")) 

すると、エラーになります。

ggplot() +
+ geom_line(data=test,aes(x=Day,y=Score),size=0.4,alpha=0.4) + geom_point(data=test,aes(x=Day,y=Score),alpha=0.7)+
+ theme(plot.margin = unit(c(5, 5, 5, 5), "cm"))
以下にエラー theme(plot.margin = unit(c(5, 5, 5, 5), "cm")) :
関数 "unit" を見つけることができませんでした

ggplot2のバージョンは、毎度メソッドの変更がとても多く、webの情報が古くてあてにならないことがよく起こります。今回もその手のエラーかと思って色々調べましたが解決できずにいました。
ふと、エラーを英語のクエリーにして検索したところ(Error: could not find function "unit")こちらがみつかりました。library(grid)が必要なようです。

library(grid)
ggplot() +
+ geom_line(data=test,aes(x=Day,y=Score),size=0.4,alpha=0.4) + geom_point(data=test,aes(x=Day,y=Score),alpha=0.7)+
+ theme(plot.margin = unit(c(5, 5, 5, 5), "cm"))

スクリーンショット 2015-02-25 18.20.35.png

正しい余白はもっと大きい(画像は周りをカットしているの)ですが、plotの周りの余白をちゃんと5cm開けてplotできました。
なんといいますか、、、関数の中にrequire(grid)入れてくれよ。。頼むぜggplot!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3