R 在圆形打印上添加圆形轴

R 在圆形打印上添加圆形轴,r,ggplot2,drawing,overlay,axis,R,Ggplot2,Drawing,Overlay,Axis,我想用圆圈作为轴覆盖我的图,以说明概率水平(例如0.25;0.75,1) 要复制图形,您需要在工作目录中使用这两个csv文件 或者,由于@Gregor在评论中建议我,这里是我的数据对象的标题,因此无需下载: dput(头部(数据)) 第二个目标: dput(头部(标签\数据)) 然后运行以下命令: library(tidyverse) library(ggplot2) library(plotrix) data=read.csv(file="data_object_2.csv", hea

我想用圆圈作为轴覆盖我的图,以说明概率水平(例如0.25;0.75,1)

要复制图形,您需要在工作目录中使用这两个csv文件

或者,由于@Gregor在评论中建议我,这里是我的数据对象的标题,因此无需下载:

dput(头部(数据))

第二个目标:

dput(头部(标签\数据))

然后运行以下命令:

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
库(tidyverse)
图书馆(GG2)
库(plotrix)
data=read.csv(file=“data\u object\u 2.csv”,header=TRUE,sep=“,”)
label\u data=read.csv(file=“label\u data\u object\u 2.csv”,header=TRUE,sep=“,”)
空_条=1
to_add=data.frame(矩阵(NA,空_条*nlevels(数据$group),ncol(数据)))
colnames(to_add)=colnames(数据)
添加$group=rep(级别(数据$group),每个=空栏)
数据=rbind(数据,待添加)
数据=数据%>%排列(组)
数据$id=序号(1,nrow(数据))
条的数量=nrow(标签数据)
角度=90-360*(标签数据$id-0.5)/32

label_data$hjust这里有一个选项,而不是简化版本的代码(我不想重新创建所有标签等,只是简化版本的图表)。我是这样想的:如果这是在正规的笛卡尔坐标系中,你可以通过画一条水平线来表示概率的叠加,所以在极坐标系中,这条线会变成一个圆。添加一个
geom_hline
会在您设置的
yintercept
上给您一个圆圈

给这些概率贴上标签可能会更好;你可以在你的上下文中找出最好的方法,但我只是画了两个圆圈,将y轴分隔符设置为相同的值,然后将y轴标题移动到标签附近,这样他们就有了一点解释。根据您的上下文,这可能并非全部必要

另外,我建议将这两个数据帧合并为一个,这样您就可以更轻松地跟踪情况,而不必在不同的几何体中设置不同的
data=
参数

库(tidyverse)
标签\u数据%>%
ggplot(aes(x=个体,y=值))+
几何图形颜色(宽度=0.5,填充=“天蓝”,α=0.7)+
geom_hline(yintercept=c(0.5,0.75,0.9),color=“gray60”)+
刻度连续(极限=c(-0.3,NA),中断=c(0.5,0.75,0.9))+
主题_极小值()+
主题(panel.grid=element\u blank(),axis.title.y=element\u text(hjust=0.87))+
坐标(起点=0)+
实验室(x=NULL,y=“概率”)


由(v0.2.0)于2018-06-03创建。

只需与
dput()共享一点示例数据即可。
。将
dput(头(您的数据))
粘贴到问题中。很少有人想下载奇怪的文件——这要求我们做的工作(还有风险!)比复制/粘贴多得多。你好@Gregor,非常感谢。我将坚持这种做法。。我按照你的建议做了,编辑了原始帖子,添加了标题。
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