Rのigraphでvertexの形を楕円にしたい（できれば追加パッケージなしで）


各vertexの形(shape)を楕円として描画したいです。

独自のshapeを作るサンプルとして[ドキュメント](http://igraph.org/r/doc/igraph.vertex.shapes.html)があるのですが
三角形や星形を作るのにsymbols()を利用しています。 symbols()では真円は作れるのですが楕円は作れなそうです。

どなたか良い方法をご存知でしょうか。

* * *

追記: パッケージを追加導入して楕円の描画ができることを確認しましたので、パッケージを使わなくて済む方法についてお教えいただけると助かります。




こんな感じで自作の楕円を描く関数を定義してやれば楕円は描けるみたいです。  
（すみません、これは適当につくったので楕円が欠けちゃってるんですけど）

けどまあ、自己レスされているように`plotrix`パッケージとか、`ellipse`パッケージの関数を使うのがお手軽ではないかと思います。  
あまりお役に立てずすみません。。

[code]

    library(igraph)
    
    shapes <- setdiff(vertex.shapes(), "")
    g <- graph.ring(length(shapes))
    
    myellipse <- function(coords, v=NULL, params) {
      vertex.color <- params("vertex", "color")
      if (length(vertex.color) != 1 && !is.null(v)) {
        vertex.color <- vertex.color[v]
      }
      vertex.size <- 1/200 * params("vertex", "size")
      if (length(vertex.size) != 1 && !is.null(v)) {
        vertex.size <- vertex.size[v]
      }
      vertex.size2 <- 1/200 * params("vertex", "size2")
      if (length(vertex.size2) != 1 && !is.null(v)) {
        vertex.size2 <- vertex.size2[v]
      }
    
      ellipse <- function(cx, cy, a, b){
        plot(function(x) b*sqrt(1-(x-cx)^2/a^2) + cy, cx - a, cx + a, add = TRUE)
        plot(function(x) -b*sqrt(1-(x-cx)^2/a^2) + cy, cx - a, cx + a, add = TRUE)
      }
    
      n <- nrow(coords)
      lapply(1:n, function(i) ellipse(coords[i,1], coords[i,2], vertex.size, vertex.size2))
    }
    add.vertex.shape("ellipse", clip=igraph.shape.noclip, plot=myellipse)
    plot(g, vertex.shape="ellipse", vertex.size=30, vertex.size2=20)
    
[/code]

![楕円](https://i.stack.imgur.com/EBNB6.png)




こんな感じで自作の楕円を描く関数を定義してやれば楕円は描けるみたいです。  
（すみません、これは適当につくったので楕円が欠けちゃってるんですけど）

けどまあ、自己レスされているように`plotrix`パッケージとか、`ellipse`パッケージの関数を使うのがお手軽ではないかと思います。  
あまりお役に立てずすみません。。

[code]

    library(igraph)
    
    shapes <- setdiff(vertex.shapes(), "")
    g <- graph.ring(length(shapes))
    
    myellipse <- function(coords, v=NULL, params) {
      vertex.color <- params("vertex", "color")
      if (length(vertex.color) != 1 && !is.null(v)) {
        vertex.color <- vertex.color[v]
      }
      vertex.size <- 1/200 * params("vertex", "size")
      if (length(vertex.size) != 1 && !is.null(v)) {
        vertex.size <- vertex.size[v]
      }
      vertex.size2 <- 1/200 * params("vertex", "size2")
      if (length(vertex.size2) != 1 && !is.null(v)) {
        vertex.size2 <- vertex.size2[v]
      }
    
      ellipse <- function(cx, cy, a, b){
        plot(function(x) b*sqrt(1-(x-cx)^2/a^2) + cy, cx - a, cx + a, add = TRUE)
        plot(function(x) -b*sqrt(1-(x-cx)^2/a^2) + cy, cx - a, cx + a, add = TRUE)
      }
    
      n <- nrow(coords)
      lapply(1:n, function(i) ellipse(coords[i,1], coords[i,2], vertex.size, vertex.size2))
    }
    add.vertex.shape("ellipse", clip=igraph.shape.noclip, plot=myellipse)
    plot(g, vertex.shape="ellipse", vertex.size=30, vertex.size2=20)
    
[/code]

![楕円](https://i.stack.imgur.com/EBNB6.png)

