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

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

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

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

Q&A

0回答

855閲覧

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

amunagan

総合スコア22

R

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

0グッド

0クリップ

投稿2022/01/08 13:25

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(5, 5, 5, 5, 5, 5, 5, 5, 5, 5) 62 63# 外側の円 64pie315(x, # ダミー 65 radius=0.8, # 半径 66 clockwise=T, 67 labels=c("1","2","3","4","5","6","7","8","9","10"), 68 cex=2, 69 col=c("black","yellow","red","blue","yellow","red","blue","yellow","red","blue")) 70 71# 重ね描き 72par(new=TRUE) 73 74# 外側と内側の円の間に入る白円 75pie315(x, # ダミー 76 radius=0.62, # 半径(内円の半径は 0.6) 77 col="white", # 領域の色 78 border="white", # 枠線の色 79 labels="") # ラベル非表示 80 81# 重ね描き 82par(new=TRUE) 83 84# 内円 85pie315(x, 86 radius=0.6, # 半径 87 clockwise=T, 88 labels=c("1","2","3","4","5","6","7","8","9","10"), 89 cex=2, 90 col=c("red","green","blue","gray","green","blue","gray","green","blue","gray"), 91 border=F) 92 93# 重ね描き 94par(new=TRUE) 95 96# 中央の白円 97pie315(1, # ダミー 98 radius=0.4, # 半径 99 col="white", # 領域の色 100 border="white", # 枠線の色 101 labels="") # ラベル非表示 102 103# テキストの挿入 104text(0, 0, # 挿入位置 105 labels="pie12", 106 cex=3, 107 col="red") 108 109dev.off()

教えて頂いた方法で、ドーナツグラフを作り出せたのですが、これ例えば、
繋がっている1と2とか、2と3とかの間にだけ、黒線(できれば太い)で仕切ったりする事はできるんでしょうか?1と2や2と3の間だけ線が入っていて、他は入っていない、といった事です。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問