5

ベン図の各セクションにパーセンテージを追加しようとしています。貼り付けを使用して、円のタイトルとパーセンテージを連結しようとしました。ただし、残念ながら、これは完全には機能しません。交差点にはタイトルがないため、独立したグループごとにパーセンテージを提供するだけで、交差点ごとにパーセンテージを提供しないからです。理想的には、パーセンテージが円の中にあることを望みます。たとえば、中間の三重交点 (仕事、勉強、遊び) を、現在の「83」ではなく、「83、20.54%」と表示したいと考えています。

以下は、私が使用しているコードの基本的な例です。

g = draw.triple.venn(
  area1 = 396,
  area2 = 273,
  area3 = 147,
  n12 = 266,
  n23 = 86,
  n13 = 143,
  n123 = 83,
  category = c("Study", "Work", "Play"),
  fill = c("blue", "red", "green"),
  euler.d=TRUE,
  scaled=TRUE, ind = FALSE,
)

require(gridExtra)
grid.arrange(gTree(children=g), main="Title", sub="subtitle")
4

5 に答える 5

5

現在、VennDiagram パッケージは print.mode 引数をサポートするようになりました。これを「パーセント」に変更して、ベン図内にパーセンテージを表示できます。例えば:

example.list = list(A=1:10, B=6:15, C=c(10, 16:20))
venn.grid = venn.diagram(example.list, filename=NULL, print.mode="percent")
grid.draw(venn.grid)

ここに画像の説明を入力

于 2016-01-29T18:40:24.187 に答える
5

現時点でVennDiagram::draw.triple.vennは、セルのラベルが数字としてハードコーディングされています。そのデフォルトを変更するためにスローするスイッチはありません。ラベルが定義されている場所を特定した後、ハッキングするのは非常に簡単です。変化する:

cell.labels <- areas

に:

draw.triple.venn2 <- function( ....
      .....
cell.labels <- paste0(areas," : ", round( 100*areas/sum(areas), 1), "%")
       .....
  }

png(); 
 print( grid.arrange(gTree(children=g), main="Title", sub="subtitle")); 
dev.off()

ここに画像の説明を入力

関数を定義draw.triple.venn2し、コードに「2」を挿入すると、上記の結果が得られました。

于 2014-02-12T02:45:02.253 に答える
2

BondedDust の回答は、私にとって非常に役に立ちました。残念ながら、評判が悪いという理由で彼の回答に賛成票を投じたり、コメントに以下を追加したりすることはできないので、ここに書きます。

BondedDust の優れたソリューションを拡張するために、私はユーザーと同じ問題を抱えていました。デフォルトの VennDiagram 関数を変更する簡単な方法は、コードに次の行を追加するだけであることがわかりました (VennDiagram ライブラリをロードした後)。

body(draw.triple.venn)[[78]] <- substitute(cell.labels <- paste0(areas," : ", round( 100*areas/sum(areas), 1), "%"))

それが役に立てば幸い

参考文献:

  1. https://stackoverflow.com/a/2458377/3881613
  2. https://stackoverflow.com/a/2485556/3881613
于 2014-09-03T11:33:03.783 に答える
1

グラフにパーセンテージをペイントする場合は、マニュアル テキストの添付ファイルを使用することをお勧めします。これは、単純で柔軟性があり、必要なものを追加できるからです。例を次に示します。

library('VennDiagram')
plot.new() #locator can be used in a plot graph but not a venn graph, so first make a brand new plot graph
draw.single.venn(area = 22, category = "Dog People")
text(locator(1),'Outlier',adj=0)
于 2014-12-02T13:57:40.427 に答える