Добавление границы в специфических точках в г - PullRequest
0 голосов
/ 06 февраля 2019

Я хотел бы добавить границу только для уровня 1 столбца 'exot'.Я искал на многих сайтах, но я нашел только объяснения того, как граничить в целом (pch и т. Д.).Рисунок 1 - это пример (сделанный в фотошопе) того, как я хотел бы иметь границу на моей фигуре.

Спасибо за любую помощь прямо сейчас

library(ggthemes)
library(ggplot2)

p<- ggplot(Dataset, aes(sp,log(num))) 
p + geom_point(aes(colour=recal, size = pf))+
  scale_fill_continuous() +
  scale_size_continuous(range = c(4,10)) +
  ggthemes::theme_few() +
  theme(axis.text.x = element_text(angle = 90, vjust = .5))

sp  num recal   pf  exot
A   47  2   7   0
B 22    0   3   0
C   5   0   0   0
D   4   0   0   0
E   2   0   0   0
F   2   0   0   0
G   2   0   0   1
H   2   0   0   0
I   1   0   1   0
J   1   0   0   0
L 1 5   0   0
M   1   0   0   0
N   1   0   0   0
O   1   0   0   0
P   1   0   0   0
Q   1   0   0   0
R   1   0   0   0
S   1   0   0   1
T   1   0   0   1
U   1   0   0   1

Figure 1

1 Ответ

0 голосов
/ 06 февраля 2019

Решение, которое может приблизить вас, состоит в том, чтобы использовать shape=21 для точек и установить цвет на exot (обратите внимание, что теперь цвет относится к границе).

Использовать scale_manualчтобы установить значения "white" и "red", затем удалите легенду:

library(ggthemes)
library(ggplot2)

ggplot(dataset, aes(sp,log(num))) + 
  geom_point(aes(fill=recal, size = pf, color=as.factor(exot)), shape = 21, stroke = 2)+
  scale_fill_continuous() +
  scale_size_continuous(range = c(4,10)) +
  scale_colour_manual(values=c("white", "red")) + # set the border to the bg color
  ggthemes::theme_few() +
  guides(color = FALSE) + # remove the legend for the border
  theme(axis.text.x = element_text(angle = 90, vjust = .5))

enter image description here


Если вы все еще хотите использовать "полные "очки за легенду "pf" используйте это:

library(ggthemes)
library(ggplot2)

ggplot(dataset, aes(sp,log(num))) + 
  geom_point(aes(fill=recal, size = pf, color=as.factor(exot)), shape = 21, stroke = 2)+
  scale_fill_continuous() +
  # change guide for the size 
  scale_size_continuous(range = c(4,10), guide=guide_legend(override.aes = list(shape=19))) + 
                                         # ^this part (forces the shape to 19)
  scale_colour_manual(values=c("white", "red")) + # set the border to the bg color
  ggthemes::theme_few() +
  guides(color = FALSE) + # remove the legend for the border
  theme(axis.text.x = element_text(angle = 90, vjust = .5))

enter image description here

Данные:

tt <- "sp  num recal   pf  exot
A   47  2   7   0
B 22    0   3   0
C   5   0   0   0
D   4   0   0   0
E   2   0   0   0
F   2   0   0   0
G   2   0   0   1
H   2   0   0   0
I   1   0   1   0
J   1   0   0   0
L 1 5   0   0
M   1   0   0   0
N   1   0   0   0
O   1   0   0   0
P   1   0   0   0
Q   1   0   0   0
R   1   0   0   0
S   1   0   0   1
T   1   0   0   1
U   1   0   0   1"

dataset <- read.table(text=tt, header=T)
...