質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

1回答

1327閲覧

Rで作成した円グラフの編集

amunagan

総合スコア22

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2022/01/06 07:54

編集2022/01/08 13:19

以前教えて頂いた以下コードにて、この画像が作成できました。

イメージ説明

R

1pie315 <- function (x, labels = names(x), edges = 200, radius = 0.8, clockwise = FALSE, 2 init.angle = if (clockwise) 90 else 0, density = NULL, angle = 45, 3 col = NULL, border = NULL, lty = NULL, main = NULL, ...) 4{ 5 if (!is.numeric(x) || any(is.na(x) | x < 0)) 6 stop("'x' values must be positive.") 7 if (is.null(labels)) 8 labels <- as.character(seq_along(x)) 9 else labels <- as.graphicsAnnot(labels) 10 x <- c(0, cumsum(x)/sum(x)) 11 dx <- diff(x) 12 nx <- length(dx) 13 plot.new() 14 pin <- par("pin") 15 xlim <- ylim <- c(-1, 1) 16 if (pin[1L] > pin[2L]) 17 xlim <- (pin[1L]/pin[2L]) * xlim 18 else ylim <- (pin[2L]/pin[1L]) * ylim 19 dev.hold() 20 on.exit(dev.flush()) 21 plot.window(xlim, ylim, "", asp = 1) 22 if (is.null(col)) 23 col <- if (is.null(density)) 24 c("white", "lightblue", "mistyrose", "lightcyan", 25 "lavender", "cornsilk") 26 else par("fg") 27 if (!is.null(col)) 28 col <- rep_len(col, nx) 29 if (!is.null(border)) 30 border <- rep_len(border, nx) 31 if (!is.null(lty)) 32 lty <- rep_len(lty, nx) 33 angle <- rep(angle, nx) 34 if (!is.null(density)) 35 density <- rep_len(density, nx) 36 twopi <- if (clockwise) 37 -2 * pi 38 else 2 * pi 39 t2xy <- function(t) { 40 t2p <- twopi * t + init.angle * pi/180 41 list(x = radius * cos(t2p), y = radius * sin(t2p)) 42 } 43 for (i in 1L:nx) { 44 n <- max(2, floor(edges * dx[i])) 45 P <- t2xy(seq.int(x[i], x[i + 1], length.out = n)) 46 polygon(c(P$x, 0), c(P$y, 0), density = density[i], angle = angle[i], 47 border = border[i], col = col[i], lty = lty[i]) 48 P <- t2xy(mean(x[i + 0:1])) 49 lab <- as.character(labels[i]) 50 if (!is.na(lab) && nzchar(lab)) { 51 text(0.92 * P$x, 0.85 * P$y, labels[i], xpd = TRUE, 52 adj = ifelse(P$x > 0, 1, 0), ...) 53 } 54 } 55 title(main = main, ...) 56 invisible(NULL) 57} 58 59png("graph.png", width = 800, height = 700) # 描画デバイスを開く 60 61x <- c(20, 15, 10, 5) 62 63# 外側の円 64pie315(x, # ダミー 65 radius=0.8, # 半径 66 clockwise=T, 67 labels=c("A","B","C","D"), 68 cex=2, 69 col=c("black","yellow","red","blue")) 70 71# 重ね描き 72par(new=TRUE) 73 74pie315(x, 75 radius=0.6, # 半径 76 clockwise=T, 77 labels=c("A","B","C","D"), 78 cex=2, 79 col=c("red","green","blue","gray")) 80 81# 重ね描き 82par(new=TRUE) 83 84# 中央の白円 85pie315(1, # ダミー 86 radius=0.4, # 半径 87 col="white", # 領域の色 88 border="white", # 枠線の色 89 labels="") # ラベル非表示 90 91# テキストの挿入 92text(0, 0, # 挿入位置 93 labels="pie12", 94 cex=3, 95 col="red") 96 97dev.off()

で、更に質問があり、方法やヒントだけでも教えて頂けると有難いのですが、
このグラフを、どこまで変形できるのか、が、問題なのですが、
例えば、
1.内円と外円の間を密着させず、間隔を少し開ける(間に白円を入れる)。
2.内円と外円の間の黒線を消す(例えば、B緑とB黄を仕切っている細い黒線を消す)。

こういった事は、できるのでしょうか、どのようにするのでしょう・・・。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  1. 内円と外円の間を密着させず、間隔を少し開ける(間に白円を入れる)。

中央の白円と同様に、内円よりも少し半径の大きな白い円を描きます。

r

1 : 2# 外円を描画 3 : 4 5# 外側と内側の円の間に入る白円 6pie315(x, # ダミー 7 radius=0.62, # 半径(内円の半径は 0.6) 8 col="white", # 領域の色 9 border="white", # 枠線の色 10 labels="") # ラベル非表示 11 12# 重ね描き 13par(new=TRUE) 14 15# 内円を描画 16 :
  1. 内円と外円の間の黒線を消す(例えば、B緑とB黄を仕切っている細い黒線を消す)。

内円を描く際に border=F を指定するとB緑とB黄を仕切っている細い黒線は消えるのですが、
内円の仕切り(例えば A赤とB緑の仕切り)も消えてしまいます。

r

1pie315(x, 2 radius=0.6, # 半径 3 clockwise=T, 4 labels=c("A","B","C","D"), 5 cex=2, 6 col=c("red","green","blue","gray"), 7 border=F)

plot

投稿2022/01/06 08:33

melian

総合スコア20655

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amunagan

2022/01/06 15:37

これまた素晴らしい。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問