0

確率レベル (例: 0.25; 0.75, 1) を示すために、円を軸としてプロットをオーバーレイしたいと思います。

グラフィックを再現するには、作業ディレクトリにこれらの 2 つの csv ファイルが必要です

https://drive.google.com/open?id=1RsleBYQFlm3ce3xuqTLK-_r9s374yd40

または、コメントで@Gregorから親切にアドバイスを受けているので、ここに私のデータオブジェクトのヘッダーがあるので、ダウンロードは必要ありません:

dput(ヘッド(データ))

structure(list(id = 1:6, individual = structure(c(1L, 12L, 23L, 
26L, 27L, 28L), .Label = c("Person 1", "Person 10", "Person 11", 
"Person 12", "Person 13", "Person 14", "Person 15", "Person 16", 
"Person 17", "Person 18", "Person 19", "Person 2", "Person 20", 
"Person 21", "Person 22", "Person 23", "Person 24", "Person 25", 
"Person 26", "Person 27", "Person 28", "Person 29", "Person 3", 
"Person 30", "Person 31", "Person 4", "Person 5", "Person 6", 
"Person 7", "Person 8", "Person 9"), class = "factor"), value = c(0.658333333, 
0.958333333, 0.720833334, 0.883333333, 0.779166667, 0.9375), 
    group = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "A", class = "factor")), .Names = c("id", 
"individual", "value", "group"), row.names = c(NA, 6L), class = "data.frame")

および 2 番目のオブジェクト:

dput(ヘッド(ラベルデータ))

structure(list(id = 1:6, individual = structure(c(1L, 12L, 23L, 
26L, 27L, 28L), .Label = c("Person 1", "Person 10", "Person 11", 
"Person 12", "Person 13", "Person 14", "Person 15", "Person 16", 
"Person 17", "Person 18", "Person 19", "Person 2", "Person 20", 
"Person 21", "Person 22", "Person 23", "Person 24", "Person 25", 
"Person 26", "Person 27", "Person 28", "Person 29", "Person 3", 
"Person 30", "Person 31", "Person 4", "Person 5", "Person 6", 
"Person 7", "Person 8", "Person 9"), class = "factor"), value = c(0.658333333, 
0.958333333, 0.720833334, 0.883333333, 0.779166667, 0.9375), 
    group = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "A", class = "factor"), 
    hjust = c(0, 0, 0, 0, 0, 0), angle = c(84.375, 73.125, 61.875, 
    50.625, 39.375, 28.125)), .Names = c("id", "individual", 
"value", "group", "hjust", "angle"), row.names = c(NA, 6L), class = "data.frame")

そして、次を実行します。

library(tidyverse)
library(ggplot2)
library(plotrix)



data=read.csv(file="data_object_2.csv", header=TRUE, sep=",")

label_data=read.csv(file="label_data_object_2.csv", header=TRUE, sep=",")


empty_bar=1
to_add = data.frame( matrix(NA, empty_bar*nlevels(data$group), ncol(data)) )
colnames(to_add) = colnames(data)
to_add$group=rep(levels(data$group), each=empty_bar)
data=rbind(data, to_add)
data=data %>% arrange(group)
data$id=seq(1, nrow(data))


number_of_bar=nrow(label_data)
angle= 90 - 360 * (label_data$id-0.5) /32  

label_data$hjust<-ifelse( angle < -90, 1, 0)


label_data$angle<-ifelse(angle < -90, angle+180, angle)

p = ggplot(data, aes(x=as.factor(id), y=value)) +       


  geom_bar(stat="identity", fill=alpha("skyblue", 0.7)) + 


  ylim(-0.3,1) + 
theme_minimal() +
  theme(
    axis.text = element_blank(),
    axis.title = element_blank(),
    panel.grid = element_blank(),
    plot.margin = unit(rep(-1,4), "cm")     
  ) +


  coord_polar(start = 0) +


  geom_text(data=label_data, aes(x=id, y=value, label=individual, hjust=hjust), color="black", fontface="bold",alpha=0.6, size=2.5, angle= label_data$angle, inherit.aes = FALSE ) +

  geom_vline(xintercept = 0, color = "grey", linetype = "dashed") +  
  annotate("text", label = "p=0", x = 0, y = 0, color = "black") +
  annotate("text", label = "p=1", x = 0, y = 1, color = "black") +
  annotate("text", label = "p=0.5", x = 0, y = 0.5, color = "black") 


p

これは次のようになります: https://drive.google.com/open?id=1xDOym_nn-x9nrUoKpB9rtg7h7NYIfucF

可読性を高めるために、確率レベルを示す円を重ねて表示したいと思います。私が見つけたすべてのオンライン ヘルプは、どちらも機能しなかった一般的なデカルト グラフまたは geom_circle 関数に関連しています。

どんな助けでも本当に感謝します。

ありがとうマレク

4

1 に答える 1