Я столкнулся с проблемой, когда мне нужно наложить слои двух графиков, представляющих собой диаграмму рассеяния и кольцевую диаграмму.
При использовании обычной кольцевой диаграммы в ggplot2 масштаб полностью изменяется, и я не могу накладывать слои диаграмма рассеяния по нему.
Мое решение состояло в том, чтобы создать два круга с помощью geom_circle и выделить / заштриховать область между кругами, однако я изо всех сил пытаюсь заставить его работать.
Это может быть не идеальное решение, поэтому мы будем очень благодарны за любые советы на данном этапе.
#
# load packages
#
library(tidyverse)
library(ggplot2)
library(ggforce)
#
# create test data
#
x <- c(5,-3,2,-1,7,-1, 4,-6)
y <- c(3, 5,8,-2,3, 2,-7,-1)
instance <- c('Positive','Positive','Positive','Positive','Negative', 'Negative', 'Negative','Negative')
df <- data.frame(x, y, instance)
df_circle_1 <- data.frame(x=0,y=0, r=5)
df_circle_2 <- data.frame(x=0,y=0, r=7)
#
# create circle plot - 1
#
p <- ggplot() + geom_circle(data=df_circle_1,
aes(x0=x,
y0=y,
r=r),
linetype="dashed",
size=1,
colour="darkgrey")
#
# add circle plot - 2
#
p <- p + geom_circle(data=df_circle_2,
aes(x0=x,
y0=y,
r=r),
linetype="dashed",
size=1,
colour="darkgrey")
#
# add scatterplot
#
p <- p + geom_point(data=df,
aes(x,
y,
color=instance,
shape=instance),
size=3,) +
scale_x_continuous(breaks=seq(-10, 10, by=1), limits=c(-10,10)) +
scale_y_continuous(breaks=seq(-10, 10, by=1), limits=c(-10,10)) +
geom_vline(xintercept = 0, linetype = 1) +
geom_hline(yintercept = 0, linetype = 1) +
theme(legend.title=element_blank(),
panel.grid.minor = element_blank(),
axis.title.y=element_text(angle=360,vjust=0.5))
#
# display chart
#
p
График, который я пытаюсь воспроизвести
График, созданный моим кодом