4

Rプロット関数を使用しbaseて円グラフを作成しており、各円セグメントの輪郭の線の太さを変更したいと思います。 ?pieオプションのグラフィックパラメータを追加できることを示しているようですが、追加lwd=が機能していないようです。私がこれをどのように行うことができるかについて、誰もが手がかりを持っています。で円グラフを作成するのはまだ熟練していないので、 (可能であれば)Rプロットを使い続けggplotたいと思います。base

library(RColorBrewer)

x1 <- data.frame(V1 = c(200, 100)) ##  generate data

row.names(x1) <- c("A", "B")

x1$pct <- round((x1$V1/sum(x1$V1))*100, 1)

lbls1 <- paste(row.names(x1), "-(",x1$pct, '%)', sep='') ## add some informative stuff

pie(x1$V1, labels=lbls1, col=tail(brewer.pal(3, 'PuBu'), n=2), 
           main=paste('My 3.1415'), cex=1.1, lwd= 3) 

lwd=他のベースプロットのように線の太さが増すことはありません。

誰か手がかりがありますか?

4

2 に答える 2

8

内外への呼び出しが通過polygonしない、またはlinespie...lwd

...
polygon(c(P$x, 0), c(P$y, 0), density = density[i], angle = angle[i], 
        border = border[i], col = col[i], lty = lty[i])
    P <- t2xy(mean(x[i + 0:1]))
    lab <- as.character(labels[i])
    if (!is.na(lab) && nzchar(lab)) {
        lines(c(1, 1.05) * P$x, c(1, 1.05) * P$y)
....

これを回避するpar(lwd = 2)には、電話をかける前に、外に(または何でも)設定します。pie

すなわち

# save original settings
opar <- par(no.readonly = TRUE)
par(lwd = 2)
pie(x1$V1, labels=lbls1, col=tail(brewer.pal(3, 'PuBu'), n=2), 
  main=paste('My 3.1415'), cex=1.1)

ここに画像の説明を入力してください

par(lwd = 3)

ここに画像の説明を入力してください

# reset to original
par(opar)
于 2013-03-05T23:54:00.303 に答える
6

現時点でpieは、実際の描画を行う内部の関数は次のpolygonとおりです。その呼び出し方法は次のとおりです。

polygon(c(P$x, 0), c(P$y, 0), density = density[i], angle = angle[i], 
        border = border[i], col = col[i], lty = lty[i])

ハードコーディングされていない可能性のある引数を受け入れるための引数がなくlwd、さらに重要なことに引数がないことに注意してください。...

新しいpie2関数を作成します。まず、pieと入力し、コードをコピーして、いくつかの変更を加えます。

pie2 <- 
   function (x, labels = names(x), edges = 200, radius = 0.8, clockwise = FALSE, 
             init.angle = if (clockwise) 90 else 0, density = NULL, angle = 45, 
             col = NULL, border = NULL, lty = NULL, main = NULL,  lwd=1,...) 

    {
       ................
     polygon(c(P$x, 0), c(P$y, 0), density = density[i], angle = angle[i], 
           border = border[i], col = col[i], lty = lty[i], lwd=lwd )
       .................

       }
  pie2(x1$V1, labels=lbls1, col=tail(brewer.pal(3, 'PuBu'), n=2), 
              main=paste('My 3.1415'), cex=1.1, lwd=5)
于 2013-03-05T23:53:18.107 に答える